我应该如何在Python中折叠元素?

cam*_*mil 3 python python-2.7

例如:

l = [('a',1),('b',2),('a',2)]

collapsed_l = dict(a=[1,2],b=[2])
Run Code Online (Sandbox Code Playgroud)

怎么最好的lcollapsed_l

从某种意义上说,我想要某种方式来概括我正在崩溃的"领域"以及哪个领域.我认为这类似于数据库和电子表格中的数据透视表,但我可能错了.

jam*_*lak 5

>>> from collections import defaultdict
>>> l = [('a',1),('b',2),('a',2)]
>>> collapsed_l = defaultdict(list)     
>>> for letter,num in l:
        collapsed_l[letter].append(num)


>>> collapsed_l
defaultdict(<type 'list'>, {'a': [1, 2], 'b': [2]})
Run Code Online (Sandbox Code Playgroud)


jam*_*lak 5

>>> from itertools import groupby
>>> from operator import itemgetter
>>> l = [('a',1),('b',2),('a',2)]
>>> dict((k,[n for l,n in v]) for k,v in groupby(sorted(l),itemgetter(0)))
{'a': [1, 2], 'b': [2]}
Run Code Online (Sandbox Code Playgroud)

不知道倒塌的价值观问题的顺序,如果是这样,您可以编辑sorted(l)sorted(l,key=itemgetter(0))