我有一个协会list
使用重复键:
l = [(1, 2), (2, 3), (1, 3), (2, 4)]
我想要一个dict
with list
values:
d = {1: [2, 3], 2: [3, 4]}
我可以做得更好吗:
for (x,y) in l:
try:
z = d[x]
except KeyError:
z = d[x] = list()
z.append(y)
您可以使用dict.setdefault() method https://docs.python.org/3/library/stdtypes.html#dict.setdefault为缺失的键提供默认的空列表:
for x, y in l:
d.setdefault(x, []).append(y)
或者你可以使用defaultdict() object https://docs.python.org/3/library/collections.html#collections.defaultdict为丢失的键创建空列表:
from collections import defaultdict
d = defaultdict(list)
for x, y in l:
d[x].append(y)
但要关闭自动激活行为,您必须设置default_factory
归因于None
:
d.default_factory = None # switch off creating new lists
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)