【问题标题】:Trying to take the average of strings in a list and compare there counts in list to input file尝试取列表中字符串的平均值并将列表中的计数与输入文件进行比较
【发布时间】:2013-08-08 07:18:47
【问题描述】:

我的列表目前是

['AA11','AA11','AA22','AA33','AA44','AA44']

这些是我的值,通过我返回的函数并且它们起作用,我有一个(计数)原始数据文件的 len(AA** 其中 10 个)我想要(剥离?拆分?枚举?)这个列出并将每个不同字符串的计数除以原始文件的计数,(在我的列表中,某些字符串有 2 个计数)因此我会找到字符串的平均值,AA** 将在该列表中(计数)次然后取平均值(平均值?总和/计数)?并返回一个(浮点数?)。 AA11 有两次,所以 2/10 = .2 但是 AA22 有一次,所以 1/10= 等等。

【问题讨论】:

    标签: python string list mean


    【解决方案1】:

    使用collections 模块和Counter 很简单。

    from collections import Counter
    common = Counter(yourList).items()
    average = [(a, float(b) / len(common)) for (a,b) in common]
    

    在给定列表上运行它的结果:

    >>> average
    [('AA11', 0.5), ('AA33', 0.25), ('AA22', 0.25), ('AA44', 0.5)]
    

    【讨论】:

    • +1,但我可能会将most_common() 替换为items()iteritems(),这样很明显所有average 都将拥有所有项目。
    • 这点很好,谢谢。他们做同样的事情,但越清晰越好。
    • 最终编辑:我想计算我列表中每个 AA** 的计数,(上面我的列表中的 AA11 = 2,等等 AA12 等),然后除以我得到的所有计数,列表中有多少(非重复)AA**,在上面的列表中有4个非重复AA**值@mattbryant
    【解决方案2】:

    它获取列表,然后去掉'AA',然后提取数字部分,然后找到每个数字出现的次数。

    from collections import Counter
    
    a=['AA11','AA11','AA22','AA33','AA44','AA44']
    num=list()
    for index,val in enumerate(a):
        num.append(int(val.split('AA',1)[1]))
    print Counter(num).items()
    

    【讨论】:

    • 不,AA11 是我列表中的一个字符串,我的原始数据文件中有 11 个 AA11,我想找出我的列表中有多少个 AA11,然后将该计数除以数字我的数据文件中的 AA11,我之前将其定义为“计数”@mattbryant
    猜你喜欢
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 2021-02-18
    相关资源
    最近更新 更多