itertools.groupby
의 결과를 값 목록으로 디코딩하려고합니다.파이썬 목록 이해가 itertools.groupby 디코딩을 위해 작동하지 않습니다
내 소스는 다음과 같습니다
x = [(1, 2), (2, 1), (6, 3), (6, 5), (1, 3)]
원래 방법은 다음과 같이 진술에 대한 함께 할 것입니다 동안 : 나는대로 한 줄에 그것을 만들 지능형리스트를 사용을 선택
keyfunc = itemgetter(0)
groups = []
uniquekeys = []
data = sorted(x, key=keyfunc)
for k, g in itertools.groupby(data, keyfunc):
groups.append(list(g)) # Store group iterator as a list
uniquekeys.append(k)
을 :
[(k, list(g)) for k, g in list(itertools.groupby(x, keyfunc))]
첫 번째 방법의 결과는 다음
[1, 2, 6] #for uniquekeys
[[(1, 2), (1, 3)], [(2, 1)], [(6, 3), (6, 5)]] #for groups
완전히 의미가 있습니다.
두 번째 방법의 결과는 우리가 그룹이 비어 있거나 하나의 정수를 보유 중입니다 볼 수 있습니다
[(1, []), (2, []), (6, [(6, 5)])]
.
어디서 잘못 되었나요?
itertools.groupby (x, keyfunc)]에서'[(k, list (g))를 k에 사용하십시오] ' –
Thanks @ThierryLathuille, Works! –
@ThierryLathuille 왜 그것이 변화를 가져 오나요? –