python - 计算任意数量的字典中最常见的值

标签 python python-3.x

我有数百本看起来像这样的词典。它们都具有相同的键(纽约、芝加哥等)但具有不同的值。没有缺失值。

[{'New York': 'cloudy', 'Chicago': 'snowy', 'Seattle': 'rainy'},
 {'New York': 'cloudy', 'Chicago': 'hailing', 'Seattle': 'sunny'},
 {'New York': 'sunny', 'Chicago': 'snowy', 'Seattle': 'rainy'}, 
 {'New York': 'hailing', 'Chicago': 'snowy', 'Seattle':'snowy'}]

我想计算每个键最常见的“天气”值。然后将它们全部组合成一个最终列表,该列表只输出每个城市及其最常见的键值。

{'New York': 'cloudy', 'Chicago': 'snowy', 'Seattle': 'rainy'}

我怎样才能做到这一点?

最佳答案

您可以遍历列表以将每个城市及其所有相关天气值分组,然后使用 collections.Counter:

from collections import Counter
d = [{'New York': 'cloudy', 'Chicago': 'snowy', 'Seattle': 'rainy'}, {'New York': 'cloudy', 'Chicago': 'hailing', 'Seattle': 'sunny'}, {'New York': 'sunny', 'Chicago': 'snowy', 'Seattle': 'rainy'}, {'New York': 'hailing', 'Chicago': 'snowy', 'Seattle': 'snowy'}]
weather = {i:Counter([c[i] for c in d]).most_common(1)[0][0] for b in d for i in b}

输出:

{'New York': 'cloudy', 'Chicago': 'snowy', 'Seattle': 'rainy'}

编辑:假设 d 中的所有字典都包含相同的键,只有后面的属性需要从列表中的第一个字典迭代:

weather = {i:Counter([c[i] for c in d]).most_common(1)[0][0] for i in d[0]}

关于python - 计算任意数量的字典中最常见的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53331495/

相关文章:

python - Tensorflow 的介绍性 MNIST 示例导致异常

python - 如何修复 'RuntimeWarning: divide by zero encountered in double_scalars'

python - 在早期的 Python 中重现 Python 3.3 __qualname__ 的效果

python - 如何将按 x、y、z 坐标排序的 pandas 数据框转换为 numpy 数组列表?

python - 编写一个函数,它接受一个字符串参数并返回一个新字符串,其中包含不在参数字符串中的所有字母表中的字母

python - 根据其内容将 numpy 数组拆分为类似的数组

python - 如何覆盖 django rest 框架中的异常消息

python - 如何将所有列表元素添加到另一个列表中

python - 如何对列表中的多个字符串进行切片?

python - 我无法使用 python slack API 发送布局 block