Python:将两个列表合并到字典中

时间:2015-09-18 09:37:18

标签: python list dictionary

我在Python中有以下列表:

students = ["Anderson", "Peter", "Anderson", "Bastian"]
courses = ["Biology", "History", "Maths", "History"]

我编写了一个for循环,试图将这些对与字典联系起来,以便:

Anderson-Biology
Peter-History
Anderson-Maths
Bastian-History

for循环如下:

test_dict = {}
for i in range (0, len(students)):
    test_dict[students[i]] = courses[i]

然而,当打印出字典时,我得到:

{'Bastian': 'History', 'Anderson': 'Maths', 'Peter': 'History'}

安德森'生物学发生了什么事,有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:9)

Python词典不接受重复的密钥,在您的代码中它只保留最后一个'Anderson'

相反,您可以使用dict.setdefault方法将重复的值放入列表中:

>>> d={}
>>> for i,j in zip(students,courses):
...   d.setdefault(i,[]).append(j)
... 
>>> d
{'Peter': ['History'], 'Anderson': ['Biology', 'Maths'], 'Bastian': ['History']}
>>>