python-按值分组列表
假设我有一个这样的列表:
list = [["A",0], ["B",1], ["C",0], ["D",2], ["E",2]]
我如何最优雅地将其分组以在Python中获得此列表输出:
list = [["A", "C"], ["B"], ["D", "E"]]
因此,这些值将按第二个值分组,但顺序会保留...
Veles asked 2020-01-08T19:44:08Z
6个解决方案
82 votes
values = set(map(lambda x:x[1], list))
newlist = [[y[0] for y in list if y[1]==x] for x in values]
Howard answered 2020-01-08T19:44:23Z
29 votes
from operator import itemgetter
from itertools import groupby
lki = [["A",0], ["B",1], ["C",0], ["D",2], ["E",2]]
lki.sort(key=itemgetter(1))
glo = [[x for x,y in g]
for k,g in groupby(lki,key=itemgetter(1))]
print glo
。