python list comprehension:收集重复的列

etw*_*tw3 3 python

我有一个包含重复的第一个元素的列表的排序列表.目前我正在迭代它以获得解决方案.

[['5th ave', 111, -30.00, 38.00],
['5th ave', 222, -30.00, 33.00],
['6th ave', 2224, -32.00, 34.90]]
Run Code Online (Sandbox Code Playgroud)

我想要一个优雅的列表理解,将其转换为基于第一个元素的列表列表:

['5th ave', [[111, -30.00, 38.00] , [222, -30.00, 33.00]]

谢谢

Ter*_*ryA 8

看起来像是一份工作collections.defaultdict:

>>> from collections import defaultdict
>>> L = [['5th ave', 111, -30.00, 38.00],
... ['5th ave', 222, -30.00, 33.00],
... ['6th ave', 2224, -32.00, 34.90]]
>>> d = defaultdict(list)
>>> for sublist in L:
...     d[sublist[0]].append(sublist[1:])
... 
>>> print d.items()
[('5th ave', [[111, -30.0, 38.0], [222, -30.0, 33.0]]), ('6th ave', [[2224, -32.0, 34.9]])]
Run Code Online (Sandbox Code Playgroud)

绝对没有理由让列表理解.仅仅因为它的线条较少并不意味着它更像是pythonic.