【问题标题】:Counting values in a dictionary计算字典中的值
【发布时间】:2012-08-08 10:49:56
【问题描述】:

我有一个字典,其中的值是列表,我想计算每个项目在与每个键关联的列表中出现的次数。 例如: my_dict= {10:[23,24,23,23,24],11:[17,23,23,17,24]} 会生成10:(23:3,24:2),11:(17:2,23:2,24:1)

我尝试过使用

from collections import Counter
counts = Counter((k, v) for k, v in my_dict.items())
print(counts)

我找到了here,但没有成功,因为这些值是列表,所以是不可散列的。我已经摆弄了 collections.Counter 和字典的结构一段时间了,但似乎没有任何效果。我在网上找到的所有解决方案都是针对每个键一个值的字典,以及整个字典中的重复项,而不是每个键。

【问题讨论】:

    标签: python list dictionary python-3.x


    【解决方案1】:
    >>> from collections import Counter
    >>> my_dict= {10:[23,24,23,23,24],11:[17,23,23,17,24]}
    >>> {k: Counter(v) for k, v in my_dict.items()}
    {10: Counter({23: 3, 24: 2}), 11: Counter({17: 2, 23: 2, 24: 1})}
    

    【讨论】:

    • 太棒了!这是多么简单有点令人尴尬:p 谢谢!
    • @Snaaa 错误消息一定把你吓跑了 :) 因为 Counter 试图计算实际的元组本身,它们是键对值,而该值是一个不可散列的列表。
    【解决方案2】:
    counts = {k:Counter(v) for (k,v) in my_dict.items()}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-19
      相关资源
      最近更新 更多