2016-05-19 17 views
0

使用見出すGROUPBY:このようなPythonのitertools MAX値

from itertools import groupby 

from operater import itemgetter 

入力:キーGROUPBY最大値を見つける

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

何1)、(( '' x '、' c ')、5)、((' 'a'、 'b')、2)] '? 'groupby'の理由は何ですか?それは必須条件ですか? – soon

+0

グループdictキーの最初の項目 –

答えて

0

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