python itertools groupby找到最大值

时间:2016-05-19 04:04:38

标签: python-2.7 group-by itertools

使用:

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}

1 个答案:

答案 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