Problem mit dict() in Python, TypeError:'tuple' object ist nicht aufrufbar

Ich versuche, eine Funktion, die für eine arbritrary Anzahl von Wörterbuch-Eingänge und erstellen Sie ein neues Wörterbuch mit allen Eingängen enthalten. Wenn die beiden Schlüssel identisch sind, der Wert sollte eine Liste mit beiden Werten drin. Ich habe es dabei-aber, ich habe Probleme mit der dict () - Funktion. Wenn ich manuell durchführen, die dict-Funktion in der python-shell, ich bin in der Lage, einen neue Wörterbuch ohne Probleme; jedoch, wenn diese eingebettet ist in meiner Funktion bekomme ich einen TypeError. Hier ist mein code unter:

#Module 6 Written Homework
#Problem 4

dict1= {'Fred':'555-1231','Andy':'555-1195','Sue':'555-2193'}
dict2= {'Fred':'555-1234','John':'555-3195','Karen':'555-2793'}

def dictcomb(*dict):
    mykeys = []
    myvalues = []
    tupl = ()
    tuplist = []
    newtlist = []
    count = 0
    for i in dict:
        mykeys.append(list(i.keys()))
        myvalues.append(list(i.values()))
        dictlen = len(i)
        count = count + 1
    for y in range(count):
        for z in range(dictlen):
            tuplist.append((mykeys[y][z],myvalues[y][z]))
    tuplist.sort()
    for a in range(len(tuplist)):
        try:
            if tuplist[a][0]==tuplist[a+1][0]:
                comblist = [tuplist[a][1],tuplist[a+1][1]]
                newtlist.append(tuple([tuplist[a][0],comblist]))
                del(tuplist[a+1])
            else:
                newtlist.append(tuplist[a])
        except IndexError as msg:
            pass
    print(newtlist)
    dict(newtlist)

Den Fehler den ich bekomme, ist wie folgt:

Traceback (most recent call last):
  File "<pyshell#17>", line 1, in <module>
    dictcomb(dict1,dict2)
  File "C:\Python33\M6HW4.py", line 34, in dictcomb
    dict(newtlist)
TypeError: 'tuple' object is not callable

Wie ich oben beschrieben habe, in der python-shell, drucken(newtlist) gibt:

[('Andy', '555-1195'), ('Fred', ['555-1231', '555-1234']), ('John', '555-3195'),     ('Karen', '555-2793')]

Wenn ich kopieren und fügen Sie diese Ausgabe in der dict () - Funktion:

dict([('Andy', '555-1195'), ('Fred', ['555-1231', '555-1234']), ('John', '555-3195'), ('Karen', '555-2793')])

Die Ausgabe wird zu dem, was ich möchte, nämlich:

{'Karen': '555-2793', 'Andy': '555-1195', 'Fred': ['555-1231', '555-1234'], 'John': '555-3195'}

Egal was ich versuche, ich kann nicht reproduzieren, dies in meiner Funktion. Bitte helfen Sie mir! Danke!

InformationsquelleAutor user2680677 | 2013-08-14
Schreibe einen Kommentar