我試圖將itertools.groupby
的結果解碼爲值列表。Python列表理解不適用於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)])]
這裏我們可以看到的基團是空的或單一的保持整數。
它出錯了?
只需使用'[(k,list(g))for k,g in itertools.groupby(x,keyfunc)]' –
Thanks @ThierryLathuille,Works! –
@ThierryLathuille雖然爲什麼會有所作爲? –