如何创建基于键合并值的字典?

时间:2019-10-14 03:30:28

标签: python dictionary

我需要创建一个将键映射到合并值的字典。 假设我得到了具有重复键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")}。 我怎么能得到这个?

1 个答案:

答案 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)