2016-11-09 116 views
0

我正在試圖合併三個字典在一起。在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

回答

0

你可以使用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的問題的情況下,似乎是這種情況。 但是,鍵確實需要是唯一的,如果他們不是,那麼你需要編寫自己的合併函數來處理重複的方式,你想要的。 –

0

合併多個字典,讓我們說我們有字典Sinfo,SSubject和SDegree

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

但基於你提不支持的操作類型的錯誤,看起來像你仍然有中sinfo,SSubject等問題SDegree字典,其中沒有足夠的信息發表評論