2016-05-19 12 views
0

Verwendung finden:Python itertools groupby der Max-Wert

from itertools import groupby 

from operater import itemgetter 

wie folgt aus:

Eingang:

test = {('a','b'):1,('a','c'):2,('a','d'):3,('x','b'):4,('x','c'):5} 

den maximalen Wert groupby den Schlüssel finden [0]

Ausgang :

output_test = {('a','d'):3,('x','c'):5} 
+0

sorry, –

+0

Versehens Was über den Fall "[((a ',' b '), 1), ((' x ',' c '), 5), ((' a ',' b '), 2)]'? Was ist der Grund für 'groupby'? Ist es eine Anforderung? – soon

+0

groupby das erste Element des Diktatschlüssels –

Antwort

0

dies mit itetools.groupby zu tun und Sie kümmern sich nicht davon aus, welcher Eintrag zurückgegeben wird, wenn mehrere Einträge mit demselben Maximalwert sind:

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 

Ausgänge:

{('x', 'c'): 5, ('a', 'd'): 3} 
True 
Verwandte Themen