加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python字典唯一值的计数

发布时间:2020-12-20 12:37:43 所属栏目:Python 来源:网络整理
导读:我在 Python中计算每个键的不同值时遇到问题. 我有一本字典 [{"abc":"movies"},{"abc": "sports"},{"abc": "music"},{"xyz": "music"},{"pqr":"music"},{"pqr":"movies"},{"pqr":"sports"},{"pqr":"news"},{"pqr":"sports"}] 我需要分别为每个键打印不同值的
我在 Python中计算每个键的不同值时遇到问题.

我有一本字典

[{"abc":"movies"},{"abc": "sports"},{"abc": "music"},{"xyz": "music"},{"pqr":"music"},{"pqr":"movies"},{"pqr":"sports"},{"pqr":"news"},{"pqr":"sports"}]

我需要分别为每个键打印不同值的数量.

这意味着我想要打印

abc 3
xyz 1
pqr 4

请帮忙.

谢谢

解决方法

使用 collections.Counter() instance,以及一些链接:

from collections import Counter
from itertools import chain

counts = Counter(chain.from_iterable(e.keys() for e in d))

这可确保正确计算输入列表中包含多个键的词典.

演示:

>>> from collections import Counter
>>> from itertools import chain
>>> d = [{"abc":"movies"},{"pqr":"sports"}]
>>> Counter(chain.from_iterable(e.keys() for e in d))
Counter({'pqr': 5,'abc': 3,'xyz': 1})

或输入词典中的多个键:

>>> d = [{"abc":"movies",'xyz': 'music','pqr': 'music'},{"abc": "sports",'pqr': 'movies'},{"abc": "music",'pqr': 'sports'},'xyz': 1})

Counter()具有其他有用的功能,例如.most_common() method以反向排序顺序列出元素及其计数:

for key,count in counts.most_common():
    print '{}: {}'.format(key,count)

# prints
# 5: pqr
# 3: abc
# 1: xyz

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读