我需要创建一个将键映射到合并值的字典。
假设我得到了具有重复键40
的键值对:{40: "lamb"}
,{40: "dog"}
,{50: "chicken"}
list_key = (40, 40, 50)
new_value = ("lamb", "dog", "chicken")
new_dict = {}
for i in list_key:
if i not in new_dict:
new_dict[list_key] = new_value
else:
new_dict[?] = new_value
return new_dict
这就是我被困住的地方。
我需要的是{40: ("lamb", "dog"), 50: ("chicken")}
。
我怎么能得到这个?
答案 0 :(得分:3)
一种方法是在键不存在时创建列表。然后,只要遇到相关的密钥,只需追加到该列表即可。
keys = [40, 40, 50]
values = ["lamb", "dog", "chicken"]
d = {}
for k, v in zip(keys, values):
if k not in d:
d[k] = []
d[k].append(v)
...尽管您可以使用collections.defaultdict
更简洁地做到这一点:
keys = [40, 40, 50]
values = ["lamb", "dog", "chicken"]
d = defaultdict(lambda: [])
for k, v in zip(keys, values):
d[k].append(v)