在Python中合并三个字典

问题描述:

我正在试图合并三个字典在一起。在Python中合并三个字典

我收到一个unsupported operand types错误。

这里是我的代码:

def add_student(): 
    global Snumber 
    global iCode 
    global kCode 
    Snumber = Student_number.get() 
    Sname = Student_name.get() 
    Ssurnname = Student_surname.get() 
    Sdetail = Student_detail.get() 
    i = Students(Snumber,Sname,Ssurnname,Sdetail) 
    Sinfo[Snumber]=[Sname,Ssurnname,Sdetail] 

    iName = Student_subject.get() 
    iCode = Student_code.get() 
    iMark1 = Student_Mark1.get() 
    iMark2 = Student_Mark2.get() 
    iMark3 = Student_Mark3.get() 
    iProject = Student_project.get() 
    j = Subjects(iName,iCode,iMark1,iMark2,iMark3,iProject) 
    SSubject[iCode]=[iName,iMark1,iMark2,iMark3,iProject] 

    kCourse = Degree_course.get() 
    kCode = Degree_code.get() 
    kYear = Degree_year.get() 
    v = Degrees(kCourse,kCode,kYear) 
    SDegree[kCode]=[kCourse,kYear] 

    popup_add() 
    student_list = (Sinfo.items() + SSubject.items() + SDegree.items()) 
    print(student_list) 

我相信我的问题是:

student_list = (Sinfo.items() + SSubject.items() + SDegree.items()) 
    print(student_list) 
+2

这个例子对我来说看起来不完整。什么是例如'SInfo'? – languitar

+0

在问题标题中,您说合并字典,在问题的第一行中,您说他们是列表,然后最后说他们是字典。你需要更清楚一点。 – DavidG

+0

可以打印类型(Sinfo)(和其他字典)和len(Sinfo.items())(和其他项目?) – Illusionist

你可以使用dict.update()

>>> a = {1:1,2:2,3:3} 
>>> a 
{1: 1, 2: 2, 3: 3} 
>>> b = {4:4,5:5} 
>>> c = {6:6,7:7} 
>>> a.update(b) 
>>> a.update(c) 
>>> a 
{1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7} 

如果你不想修改原来的你可以用下面的方法把它复制到一个新变量中

>>> new_dict = dict(a) 
+0

这假设键对于所有的字典都是唯一的。 –

+0

这是正确的,但是在OP的问题的情况下,似乎是这种情况。 但是,键确实需要是唯一的,如果他们不是,那么你需要编写自己的合并函数来处理重复的方式,你想要的。 –

合并多个字典,让我们说我们有字典Sinfo,SSubject和SDegree

student_list = dict(Sinfo.items() + SSubject.items() + SDegree.items()) 

但基于你提不支持的操作类型的错误,看起来像你仍然有中sinfo,SSubject等问题SDegree字典,其中没有足够的信息发表评论