例子: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)
BIG阳
TA贡献1859条经验 获得超6个赞
您可以使用该dict.setdefault方法来初始化带有子列表的新键:
dictionary = {}
for k, v in zip(last_names, university):
dictionary.setdefault(k, []).append(v)
慕少森
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() }
添加回答
举报
0/150
提交
取消