【问题标题】:python: How to count the frequency of given elements in a listpython:如何计算列表中给定元素的频率
【发布时间】:2017-11-02 08:13:55
【问题描述】:

我了解计数器功能会计算列表中每个元素的频率。但我希望它包含给定元素的频率,即使该元素没有出现在列表中。

例如:

预期元素列表如下:

expected_element = [1,2,3,4,5,6,7]

对于数据集 a,b:

a = [1,1,1,1,6,6,6,3,3,4,5,5]
b = [2,2,7,1,7,5,3,5,5]

我想要的是计算 a 和 b 中预期元素的频率:

为:

keys() =   [1,2,3,4,5,6,7]
values() = [4,0,2,1,2,3,0]

对于 b:

keys() =   [1,2,3,4,5,6,7]
values() = [1,2,1,0,3,0,2]    

【问题讨论】:

标签: python counter


【解决方案1】:

您可以使用set(a) 中的唯一键创建一个字典,与空值配对,然后使用Counter(b) 更新它:

from collections import Counter

a = [1,1,1,1,6,6,6,3,3,4,5,5]
b = [2,2,7,1,7,5,3,5,5]

frequencies = {key: 0 for key in set(a)}
frequencies.update(Counter(b))
print(frequencies)

输出:

{1: 1, 3: 1, 4: 0, 5: 3, 6: 0, 2: 2, 7: 2}

【讨论】:

    【解决方案2】:

    你可以使用字典

    expected_element = [1,2,3,4,5,6,7]
    a = [1,1,1,1,6,6,6,3,3,4,5,5]
    b = [2,2,7,1,7,5,3,5,5]
    
    a_occurance = dict()
    b_occurance = dict()
    for i in expected_element:
        a_occurance[i]=0
        b_occurance[i]=0
    for i in a:
        a_occurance[i]+=1
    for i in b:
        b_occurance[i]+=1
    
    print a_occurance.keys()
    # [1, 2, 3, 4, 5, 6, 7]
    print a_occurance.values()
    # [4, 0, 2, 1, 2, 3, 0]
    print b_occurance.keys()
    # [1, 2, 3, 4, 5, 6, 7]
    print b_occurance.values()
    # [1, 2, 1, 0, 3, 0, 2]
    

    【讨论】:

      猜你喜欢
      • 2017-02-25
      • 2011-01-10
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 2017-01-27
      • 2019-09-12
      • 2017-03-01
      相关资源
      最近更新 更多