我有一本字典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}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我想找到每只动物的最高计数元素,即输出应该是:
myNewTable = {'cow':'B', 'cat':'A', 'dog':'B', 'bird':'C'}
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下代码实现此目的:
myNewTable = max(x.items(), key=operator.itemgetter(1))[0] for x in myDict
Run Code Online (Sandbox Code Playgroud)
但得到以下错误:
File "<ipython-input-11-3bcb909a6476>", line 28
myNewTable = max(x.items(), key=operator.itemgetter(1))[0] for x in myDict
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?我怎么能解决这个问题呢?
好吧,你的语法错了,但你有正确的想法.一个漂亮而简洁的解决方案,使用max并dict.get可以通过迭代来构建myDict:
>>> {k : max(v, key=v.get) for k, v in myDict.items()}
{'bird': 'C', 'cat': 'A', 'cow': 'B', 'dog': 'B'}
Run Code Online (Sandbox Code Playgroud)