python - 在字典的字典中查找计数最高的元素
问题描述
我有字典 myDict 的字典:
myDict = { 'cow': {'A':2, 'B':5, 'C':3},
'cat': {'A':7, 'B':1, 'C':6},
'dog': {'A':1, 'B':4, 'C':3},
'bird': {'A':5, 'B':7, 'C':9}
}
在这种情况下,我想找到每个动物的最高计数元素,即输出应该是:
myNewTable = {'cow':'B', 'cat':'A', 'dog':'B', 'bird':'C'}
我尝试使用以下代码来实现这一点:
myNewTable = max(x.items(), key=operator.itemgetter(1))[0] for x in myDict
但出现以下错误:
File "<ipython-input-11-3bcb909a6476>", line 28
myNewTable = max(x.items(), key=operator.itemgetter(1))[0] for x in myDict
^
SyntaxError: invalid syntax
我在这里做错了什么?我该如何解决这个问题?
解决方案
好吧,您的语法是错误的,但您的想法是正确的。一个简洁的解决方案,使用max
anddict.get
可以通过迭代来构建myDict
:
>>> {k : max(v, key=v.get) for k, v in myDict.items()}
{'bird': 'C', 'cat': 'A', 'cow': 'B', 'dog': 'B'}
推荐阅读
- c# - 此控制台应用程序代码运行一次,然后在我按 Enter 时关闭,但我需要它是连续的,我会改变什么?
- timeout - 等待存储时间长和网关超时 (504)
- parallel-processing - random_number() 如何并行工作?
- c# - 在调用 Wait 之前访问任务上的结果实际上是做什么的?
- redirect - 从 HTTPS 重定向到其他网站的 HTTPS
- shell - 从 shell 脚本调用 ant 命令
- google-drive-api - 使用 Marketplace SDK 集成 G Suite - 永久禁用“Drive UI Integration”
- sql - SQL - 产生一条记录
- r - 将R中的两个数据表粘贴在一起
- dc.js - 交叉过滤器减少正在崩溃