如何在列表字典中提取每个键的最大值?
例如
#Generate some sample data
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = defaultdict(list)
for k, v in s:
d[k].append(v)
>>> d.items()
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
我想返回以下结果:
blue 4
red 1
yellow 3
我没有成功尝试循环字典并提取列表值。但是,我似乎找不到提取值并将它们链接到正确键的方法。
答案 0 :(得分:4)
for k, v in d.items():
print k, max(v)
答案 1 :(得分:2)
如果您不需要保留所有可能值的列表,并且只需要最大值,则可以执行此操作:
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = dict(sorted(s))
d
现在是:
{'blue': 4, 'yellow': 3, 'red': 1}
sorted(s)
将按升序对元组进行排序,dict
构造函数仅反映最终(最高)结果。
奖励:如果您想要最低价值,dict(sorted(s, reverse=True))
会给您:
{'blue': 2, 'red': 1, 'yellow': 1}
答案 2 :(得分:1)
如果您希望结果也在字典中,您可以使用单行生成器表达式。
items = {'blue': [2, 4], 'yellow': [1, 3], 'red': [1]}
maxitems = {k : max(items[k]) for k in items}