Group list by values - Shuang0420/Shuang0420.github.io GitHub Wiki
list = [["A",0], ["B",1], ["C",0], ["D",2], ["E",2]]
values = set(map(lambda x:x[1], list))
newlist = [[y[0] for y in list if y[1]==x] for x in values]
newlist --> "A", "C"], ["B"], ["D", "E"
from itertools import groupby
from operator import itemgetter
things = [('2009-09-02', 11),
('2009-09-02', 3),
('2009-09-03', 10),
('2009-09-03', 4),
('2009-09-03', 22),
('2009-09-06', 33)]
for key, items in groupby(things, itemgetter(0)):
print key
for subitem in items:
print subitem
print '-' * 20
output
2009-09-02
('2009-09-02', 11)
('2009-09-02', 3)
--------------------
2009-09-03
('2009-09-03', 10)
('2009-09-03', 4)
('2009-09-03', 22)
--------------------
2009-09-06
('2009-09-06', 33)
--------------------
注意这里都是 iter 对象
>>> iterator = groupby(things, itemgetter(0))
>>> iterator
<itertools.groupby object at 0x95d3acc>
>>> iterator.next()
('2009-09-02', <itertools._grouper object at 0x95e0d0c>)
>>> iterator.next()
('2009-09-03', <itertools._grouper object at 0x95e0aec>)
python itertools_groupby使用示例(转)
itertools — Functions creating iterators for efficient looping