你能帮我转换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