Seite 1 von 1

defaultdict(list) fail

Verfasst: Dienstag 9. Mai 2017, 15:39
von DMD-OL
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.

Re: defaultdict(list) fail

Verfasst: Dienstag 9. Mai 2017, 15:49
von 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

Re: defaultdict(list) fail

Verfasst: Dienstag 9. Mai 2017, 15:50
von /me
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.

Re: defaultdict(list) fail

Verfasst: Dienstag 9. Mai 2017, 18:26
von DMD-OL
oh man, danke, ....das hätte noch gedauert :)