从两个具有重复键的列表创建字典

Fer*_*iza 0 python dictionary list

我有两个清单

subject_id = [10030, 10030, 10250, 10510]
student_id = [55000, 55804, 55804, 55000]
Run Code Online (Sandbox Code Playgroud)

我想创建一个以 subject_id 作为键、以 Student_id 作为值的字典。当我尝试时dictzip由于重复的键值,我只得到第二个值,而不是第一个值。

result = {10030: 55804, 10250: 55804, 10510: 55000}
Run Code Online (Sandbox Code Playgroud)

我的想法是让值成为一个列表。因此,当重复键出现时,相应的student_id将作为新元素添加到列表中。

期望的结果:

my_dict = {10030: [55000, 55804], 10250: [55804], 10510: [55000]} 
Run Code Online (Sandbox Code Playgroud)

如何才能做到这一点?先感谢您。

小智 5

您可以使用defaultdict(list)

from collections import defaultdict

subject_id = [10030, 10030, 10250, 10510]
student_id = [55000, 55804, 55804, 55000]

result = defaultdict(list)
for a, b in zip(subject_id, student_id):
   result[a].append(b)

print(result)
Run Code Online (Sandbox Code Playgroud)