python - 计算 python 字典中每个键的出现次数

标签 python python-2.7 dictionary

我有一个看起来有点像这样的 python 字典对象:

[{"house": 4,  "sign": "Aquarius"},
 {"house": 2,  "sign": "Sagittarius"},
 {"house": 8,  "sign": "Gemini"},
 {"house": 3,  "sign": "Capricorn"},
 {"house": 2,  "sign": "Sagittarius"},
 {"house": 3,  "sign": "Capricorn"},
 {"house": 10, "sign": "Leo"},
 {"house": 4,  "sign": "Aquarius"},
 {"house": 10, "sign": "Leo"},
 {"house": 1,  "sign": "Scorpio"}]

现在对于每个“符号”键,我想计算每个值出现的次数。

def predominant_sign(data):
    signs = [k['sign'] for k in data if k.get('sign')]
    print len(signs)

但是,这会打印“符号”在字典中出现的次数,而不是获取 符号 的值并计算特定值出现的次数。

例如,我希望看到的输出是:

Aquarius: 2
Sagittarius: 2
Gemini: 1
...

等等。我应该更改什么以获得所需的输出?

最佳答案

使用collections.Counter及其 most_common method :

from collections import Counter
def predominant_sign(data):
    signs = Counter(k['sign'] for k in data if k.get('sign'))
    for sign, count in signs.most_common():
        print(sign, count)

关于python - 计算 python 字典中每个键的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30963408/

相关文章:

c# - Windows Phone 8(工具包)图钉跳跃/闪烁

python - 跨键共享 defaultdict 中的字典

Python Redis 队列 (rq) - 如何避免为每个作业预加载 ML 模型?

python - 在没有busywait的情况下在python中实现亚毫秒处理

.net - IronPython 无法运行导入 numpy 的脚本

python - 如何编写一个带有 for 循环的 Lambda

python - 获取与静态类型检查器一起使用的 TypedDict 值类型的函数

python - 在 Plone 中的字段上移动不变验证错误消息

python - 动态创建傅里叶级数的 scipy 曲线拟合定义

python-2.7 - 当我更改主窗口大小时如何隐藏或剪切 Qwidget() 文本