我有两个列表,如下
idx = [344, 344, 590]
newx = [(257, 381), (260, 368), (514, 245)]
我用下面的代码制作字典,但它忽略了一个值。我想用一个键存储多个值。
res = dict(zip(idx, newx))
print(res)
输出看起来像{344: (260, 368), 590: (514, 245)}
,但我希望输出是{344: [(257, 381),(260, 368)], 590: [(514, 245)]}
使用默认dict:
from collections import defaultdict
idx = [344, 344, 590]
newx = [(257, 381), (260, 368), (514, 245)]
# default to empty list
res = defaultdict(list)
for k, v in zip(idx, newx):
res[k].append(v)
# get rid of default value
res = dict(res)
不能这样做,因为dict
对象具有唯一键。您应该只使用元组的列表:
idx = [344, 344, 590]
newx = [(257, 381), (260, 368), (514, 245)]
res = zip(idx, newx)
print(list(res))
如果要访问基于密钥的所有值,请使用collections.defaultdict
我相信这会满足您的需求。额外的好处是,这不需要进口。
我希望这能有所帮助。😊
res = {}
for k, v in zip(idx, newx):
if k in res:
res[k].append(v)
else:
res[k] = [v]