使用:
from itertools import groupby
from operater import itemgetter
像这样:
输入:
test = {('a','b'):1,('a','c'):2,('a','d'):3,('x','b'):4,('x','c'):5}
通过键[0]
找到最大值组输出:
output_test = {('a','d'):3,('x','c'):5}
答案 0 :(得分:0)
要使用itetools.groupby
执行此操作,并假设如果有多个条目具有相同的最大值,则不关心返回哪个条目:
test = {('a', 'b'): 1, ('a', 'c'): 2, ('a', 'd'): 3, ('x', 'b'): 4, ('x', 'c'): 5}
output_test = {('a', 'd'): 3, ('x', 'c'): 5}
grouped = itertools.groupby(sorted(test.iteritems()), lambda x: x[0][0])
maxEntries = {x[0]: x[1] for x in {max(v, key=lambda q: q[1]) for k, v in grouped}}
print maxEntries
print maxEntries == output_test
输出:
{('x', 'c'): 5, ('a', 'd'): 3}
True