Merge three dictionaries in Python

Question:

I am trying to merge three dictionaries together.

I am receiving an unsupported operand types error.

Here is my code:

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)

I believe my problem is in:

  student_list = (Sinfo.items() + SSubject.items() + SDegree.items())
  print(student_list)
Asked By: Mohammed Ismail

||

Answers:

you can use 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}

if you dont want to modify the original you can use the following to copy it into a new variable

>>> new_dict = dict(a)
Answered By: Max Chesterfield

To merge multiple dictionary, lets say we have dict Sinfo, SSubject and SDegree

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

code above will works with python 2 only. for python 3, need to add list to convert dict.items into list first as shown below

student_list = dict(list(Sinfo.items()) + list(SSubject.items()) + list(SDegree.items()))
Answered By: Skycc
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.