你能幫我轉換Python列表:Python的元組列表
[(1, 'a'), (2, 'b'), (2, 'c'), (3, 'd'), (3, 'e')]
使: (1, 'a')
是指數0
(2, 'b'), (2, 'c')
均指數1
(3, 'd'), (3, 'e')
均爲指數2
簡單來說,元素[0]的所有元組都相等,具有相同的索引。
謝謝你,
你能幫我轉換Python列表:Python的元組列表
[(1, 'a'), (2, 'b'), (2, 'c'), (3, 'd'), (3, 'e')]
使: (1, 'a')
是指數0
(2, 'b'), (2, 'c')
均指數1
(3, 'd'), (3, 'e')
均爲指數2
簡單來說,元素[0]的所有元組都相等,具有相同的索引。
謝謝你,
lst = [(1, 'a'), (2, 'b'), (2, 'c'), (3, 'd'), (3, 'e')]
lst.sort(key=lambda x: x[0]) #Only necessary if your list isn't sorted already.
new_lst = [list(v) for k,v in itertools.groupby(lst,key=lambda x:x[0])]
你可以使用operator.itemgetter(0)
,而不是你想要的lambda
...
演示:
>>> import itertools
>>> lst = [(1, 'a'), (2, 'b'), (2, 'c'), (3, 'd'), (3, 'e')]
>>> lst.sort(key=lambda x: x[0])
>>> new_lst = [list(v) for k,v in itertools.groupby(lst,key=lambda x:x[0])]
>>> new_lst
[[(1, 'a')], [(2, 'b'), (2, 'c')], [(3, 'd'), (3, 'e')]]
目前還不清楚你想要什麼,但是這個將根據它們的第一個元素將項目分組到列表中。
groups = collections.defaultdict(list)
for x,y in items:
groups[x].append(y)
不完全正確。該元組不包含索引。 –
@Jon不能相信我錯過了那個錯字。對不起,仔細校對。 – Antimony