defaultdict(list) fail

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

hi
ich hab hier ein kleines problem, das ich seit geraumer zeit nicht lösen kann.
wenn ich den code

Code: Alles auswählen

from collections import defaultdict

test_List = [[0, 'Christian Olling', u'08.08.1999', 26127, u'Oldenburg', u'02.05.2017', u'Tuesday', u'G\xfcnther, Sch\xf6n (1)', 3.0, u'10', u''], [0, 'Christian Olling', u'08.08.1999', 26127, u'Oldenburg', u'09.05.2017', u'Tuesday', u'G\xfcnther, Sch\xf6n (1)', 2.0, u'00000', u''], [0, 'Christian Olling', u'08.08.1999', 26127, u'Oldenburg', u'09.05.2017', u'Tuesday', u'G\xfcnther, Sch\xf6n (1)', 1.2, u'111111', u''], [0, 'Christian Olling', u'08.08.1999', 26127, u'Oldenburg', u'09.05.2017', u'Tuesday', u'G\xfcnther, Sch\xf6n (1)', 0.03, u'22222222', u''], [1, 'Daniel Olling', u'31.03.1985', 26683, u'Oldenburg', u'09.05.2017', u'Tuesday', u'G\xfcnther, Sch\xf6n (1)', 12.0, u'asdf', u''], [1, 'Daniel Olling', u'31.03.1985', 26683, u'Oldenburg', u'25.05.2017', u'Thursday', u'G\xfcnther, Sch\xf6n (1)', 10.0, u'asdf', u'']]

minDopp = defaultdict(list)
for eintrag in test_List:
    minDopp[eintrag[1]].append(eintrag)

print minDopp['Daniel Olling']
print minDopp['Christian Olling']
in einem leeren seite in pyscripter laufen lasse, funktioniert alles.
aber wenn ich dies in meinen schon bestehenden code kopiere, gibt es die ausnahme:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\Lib\lib-tk\Tkinter.py", line 1536, in __call__
return self.func(*args)
File "C:\Users\DMD-OL\Desktop\MZE\Python\Material-Zeit-Erfassung.py", line 15787, in rechnung_ErstellenKONTROLLE
dictDopp = defaultdict(list)
TypeError: first argument must be callable


ps: das modul habe ich auch im bestehen code drin :)
bin auf einen kleinen tipp angewiesen
ich würde es auch gern ohne zusätze wie lambda ausführen können, da sonst alles durcheinander gewürfelt wird.
Zuletzt geändert von Anonymous am Dienstag 9. Mai 2017, 15:47, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

@DMD-OL: Irgendwo in Deinem Code wirst Du den Namen `list` neu definiert haben. Ist halt keine gute Idee wenn man den eingebauten Datentyp danach noch benötigt.

Code: Alles auswählen

In [1]: import collections

In [2]: list = [1, 2, 3]

In [3]: collections.defaultdict(list)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-327d0a44dde6> in <module>()
----> 1 collections.defaultdict(list)

TypeError: first argument must be callable or None
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

DMD-OL hat geschrieben: dictDopp = defaultdict(list)
TypeError: first argument must be callable
Ich vermute, dass du in deinem Code irgendwo einen eigenen Bezeichner namens list verwendest und damit die in Python eingebaute Funktion list() überschreibst.
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

oh man, danke, ....das hätte noch gedauert :)
Antworten