为了账号安全,请及时绑定邮箱和手机立即绑定

如何在保留所有键值信息的同时从 python 中的两个列表创建字典?

如何在保留所有键值信息的同时从 python 中的两个列表创建字典?

ABOUTYOU 2021-12-09 11:01:12
例子: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'}由于姓氏列表中的重复键值。想法?
查看完整描述

3 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

用 defaultdict


from collections import defaultdict


d = defaultdict(list)

for k, v in zip(last_names, university):

    d[k].append(v)


查看完整回答
反对 回复 2021-12-09
?
BIG阳

TA贡献1859条经验 获得超6个赞

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


dictionary = {}

for k, v in zip(last_names, university):

    dictionary.setdefault(k, []).append(v)


查看完整回答
反对 回复 2021-12-09
?
慕少森

TA贡献2019条经验 获得超9个赞

假设,正如问题似乎暗示的那样,如果一个键只有一个值,则不需要列表,可以使用简单的展平后步骤来实现指定的结果。


from collections import defaultdict


d = defaultdict(list)

for k, v in zip(last_names, university):

   d[k].append(v)


# flatten single entry lists back to a string

d = { k: v[0] if len(v) == 1 else v for k, v in d.items() }


查看完整回答
反对 回复 2021-12-09
  • 3 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信