给定一个词典列表,如何返回具有最大总和的词典
>>>testing
[{'key1': 1, 'key2': 14, 'key3': 47},
{'key1': 222, 'key2': 222, 'key3': 222},
{'key1': 0, 'key2': 0, 'key3': 0}]
我想要回复
{'key1': 222, 'key2': 222, 'key3': 222}
到目前为止,我已尝试[sum(i.itervalues()) for i in testing]
,它会告诉我列表中的哪些项目具有最大价值,但我对如何返回列表感到迷茫。我使用的是Python 2.7 fwiw。
答案 0 :(得分:4)
您只需将max
与参数化key
:
result = max(testing,key=lambda x : sum(x.itervalues()))
带有max(..)
的 key
会根据给定的iterable
函数返回给定key
的最大值。
使用python
运行此操作会发出:
$ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> testing = [{'key1': 1, 'key2': 14, 'key3': 47},{'key1': 222, 'key2': 222, 'key3': 222},{'key1': 0, 'key2': 0, 'key3': 0}]
>>> max(testing,key=lambda x : sum(x.itervalues()))
{'key3': 222, 'key2': 222, 'key1': 222}
答案 1 :(得分:2)
您也可以使用max()
嵌套 dict comprehension 表达式来实现它:
# assuming the keys in all the sub-lists are same v
>>> {key: max(d[key] for d in testing) for key in testing[0].keys()}
{'key3': 222, 'key2': 222, 'key1': 222}