タプルのリストがあります。各タプルはキー値のペアであり、キーは数値であり、値は文字列です。各キーについて、上位2文字とその数をリスト形式で返す必要があります。タプルの組み合わせからトップカウントを取得
例えば、リスト
[(1, "aabbc"), (1, "babdea"), (2, "aabacc"), (2, "acdad")]
所定のキーが1と2であり、値がタプルフォーム
(1, {"a":2, "b":2, "c":1}),(1,{"a":2, "b":2, "d":1,"e":1})...(2,{"a":2, "c":1, "d":2})
のタプルに変換することができる
"aabbc", "babdea", ..., "acdaad"
ありますキー1の場合は
、結合タプルは
(1,{"a":4, "b":4, "c":1, "d":1,"e":1})
ので、そのカウントの上位2つの文字は、プロセスが各キー
のために繰り返される
[("a",4),("b",4)]
だろう、私は私の所望の出力を得ることができたが、私はより良い探していますソリューション
from collections import Counter
l=[(x[0],list(x[1])) for x in [(1, "aabbc"), (1, "babdea"), (2, "aabacc"), (2, "acdad")]]
l2=[(y[0],Counter(y[1])) for y in l]
l3=[(x[0][1],x[1][1]) for x in it.combinations(l2,2) if x[0][0]==x[1][0] ]
l4=[]
for t,y in l3:
d={}
l5=list(set(t.keys()).union(y.keys()))
for i in l5:
d[i]=t[i]+y[i]
d_sort=sorted(d.items(), key=lambda x: x[1], reverse=True)[:2]
l4.append(d_sort)
print l4
[[('a', 4), ('b', 4)], [('a', 5), ('c', 3)]]
キーでソートされたリストですか? – dawg