猿问

如何在保留所有键值信息的同时从 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'}

由于姓氏列表中的重复键值。


想法?


ABOUTYOU
浏览 181回答 3
3回答

慕尼黑8549860

用 defaultdictfrom collections import defaultdictd = defaultdict(list)for k, v in zip(last_names, university):    d[k].append(v)

BIG阳

您可以使用该dict.setdefault方法来初始化带有子列表的新键:dictionary = {}for k, v in zip(last_names, university):    dictionary.setdefault(k, []).append(v)

慕少森

假设,正如问题似乎暗示的那样,如果一个键只有一个值,则不需要列表,可以使用简单的展平后步骤来实现指定的结果。from collections import defaultdictd = defaultdict(list)for k, v in zip(last_names, university):   d[k].append(v)# flatten single entry lists back to a stringd = { k: v[0] if len(v) == 1 else v for k, v in d.items() }
随时随地看视频慕课网APP

相关分类

Python
我要回答