如何在python中从两个列表创建字典,同时维护所有键值信息?

2024-04-25 17:02:13 发布

您现在位置:Python中文网/ 问答频道 /正文

示例:

last_names = ['Bakir','Jose','Jose','Pierce']

university = ['Davis', 'Stanford', 'George Town', 'Berkeley']

需要以下

resulting_dictionary = {'Bakir':'Davis', 'Jose': ['Stanford', 'George Town'], 'Pierce':'Berkeley'}

我尝试了以下

dictionary = {key:value for key, value in zip(last_names, university)}

但得到如下结果:

{'Bakir': 'Davis', 'Jose': 'George Town', 'Pierce': 'Berkeley'}

由于姓氏列表中的键值重复。你知道吗

有什么想法?你知道吗


Tags: key示例dictionarynamesvaluelaststanfordberkeley
3条回答

使用defaultdict

from collections import defaultdict

d = defaultdict(list)
for k, v in zip(last_names, university):
    d[k].append(v)

您可以使用dict.setdefault方法初始化具有子列表的新键:

dictionary = {}
for k, v in zip(last_names, university):
    dictionary.setdefault(k, []).append(v)

您需要将该值设置为一个列表,并检查该键是否已经存在并附加到它。你知道吗

dictionary = {}
for key, value in zip(last_names, university):
    if key in dictionary:
        dictionary[key].append(value)
    else:
        dictionary[key] = [value]

这将生成所有值列表。如果您对数据格式保持一致,而不是将字符串和列表混在一起,通常会更容易。因此结果将是:

{'Bakir':['Davis'], 'Jose': ['Stanford', 'George Town']], 'Pierce':['Berkeley']}

相关问题 更多 >