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!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein typisches Beispiel dafür, warum keywords sollten nicht als Variablennamen verwendet werden. Hier
dict(newtlist)
ist zu versuchen, rufen Sie diedict()
builtin python, aber es ist eine widersprüchliche lokale variabledict
. Benennen Sie die variable um das Problem zu beheben.Etwas wie dieses:
Du die Funktion hat eine lokale variable namens
dict
kommt aus der Funktions-Argumente und-Masken, die gebaut-indict()
Funktion:Tun, die Sie implementieren müssen diese komplett selbst, oder wäre es in Ordnung, zu verwenden
defaultdict
? Wenn ja, könnten Sie etwas wie: