튜플 목록이 있습니다. 각 튜플은 키 값 쌍이며 키는 숫자이고 값은 문자 문자열입니다. 각 키에 대해 상위 2 자와 그 수를 목록 형식으로 반환해야합니다. 목록 주어진 예튜플 조합에서 최상위 수를 얻습니다.
,
[(1, "aabbc"), (1, "babdea"), (2, "aabacc"), (2, "acdad")]
키는 1, 2이고 값
"aabbc", "babdea", ..., "acdaad"
튜플
폼의 튜플로 변환 될 수있다(1, {"a":2, "b":2, "c":1}),(1,{"a":2, "b":2, "d":1,"e":1})...(2,{"a":2, "c":1, "d":2})
키 1의 경우
인 경우 결합 된 튜플은
가됩니다.(1,{"a":4, "b":4, "c":1, "d":1,"e":1})
16,그렇게 자신의 카운트와 상위 두 문자는 프로세스가 내가 원하는 출력을 얻을 수 있었다 각 키
에 대해 반복 될 것이다
[("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