将列表分组到 Python 中的字典

Jul*_*nze 0 python python-itertools

鉴于名单

l = [('a', 1), ('b', 2), ('a', 1), ('a', 2), ('c', 5), ('b', 3)]
Run Code Online (Sandbox Code Playgroud)

我如何得到字典

{'a': [1, 1, 2], 'c': [5], 'b': [2, 3]}
Run Code Online (Sandbox Code Playgroud)

在 Python 中?

编辑:我正在寻找功能解决方案(仅使用 1 个表达式)。

Moi*_*dri 8

您可以使用collections.defaultdict(). 或者,如果您不想 import collections,您可以使用普通 dict 实现相同的行为dict.setdefault()

>>> my_dict = {}
>>> l = [('a', 1), ('b', 2), ('a', 1), ('a', 2), ('c', 5), ('b', 3)]
>>> for k, v in l:
...     my_dict.setdefault(k, []).append(v)
...
>>> my_dict
{'a': [1, 1, 2], 'c': [5], 'b': [2, 3]}
Run Code Online (Sandbox Code Playgroud)