我有一个如下所示的dicts列表:
[{'apples': 99}, {'bananas': '556685'}, {'apples': 88}, {'apples': '2345566'}]
Run Code Online (Sandbox Code Playgroud)
我想按键对项目进行分组,并返回具有最高值的项目的键?即总结所有苹果的价值并总结所有香蕉的价值广告返回更高的一个 - 苹果或香蕉我似乎无法找到一个很好的方法这样做,我试图避免使用一堆循环和计数器变量.
(出于好奇,这可能是一个单行程?如果是这样,怎么样?)
将所有值更改为整数后:
import itertools as it
a = [{'apples': 99}, {'bananas': 556685}, {'apples': 88}, {'apples': 2345566}]
max((sum(i.values()[0] for i in v), k) for k,v in it.groupby(sorted(a), key=lambda x: x.keys()[0]))[1]
# 'apples'
Run Code Online (Sandbox Code Playgroud)
如果你删除尾随[1],它将给你甚至总和:
# (2345753, 'apples')
Run Code Online (Sandbox Code Playgroud)