Seite 1 von 1

defaultdict mit OrderedDict problem

Verfasst: Dienstag 14. Mai 2013, 05:36
von mit
Hi,
Wie koennte man das folgende Problem loesen?

Code: Alles auswählen

>>> from collections import defaultdict
>>> from collections import OrderedDict
>>> a = defaultdict(lambda: OrderedDict)
>>> a[1]["X.1"] = 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'type' object does not support item assignment
>>> 
Vielen Dank im Vorraus

Re: defaultdict mit OrderedDict problem

Verfasst: Dienstag 14. Mai 2013, 06:24
von DasIch

Code: Alles auswählen

>>> from collections import *
>>> OrderedDict
<class 'collections.OrderedDict'>
>>> OrderedDict[1] = 1
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: 'type' object does not support item assignment
>>> (lambda: OrderedDict)()
<class 'collections.OrderedDict'>
>>> d = defaultdict(OrderedDict)
>>> d[0][0] = 1
>>> d
defaultdict(<class 'collections.OrderedDict'>, {0: OrderedDict([(0, 1)])})
Dir ist klar was passiert?

Re: defaultdict mit OrderedDict problem

Verfasst: Dienstag 14. Mai 2013, 06:34
von cofi
Indem man es richtig benutzt:

Code: Alles auswählen

In [1]: from collections import defaultdict, OrderedDict

In [2]: a = defaultdict(OrderedDict)

In [3]: a[1]["X.1"] = 0

In [4]: a = defaultdict(lambda: OrderedDict())

In [5]: a[1]["X.1"] = 0

Re: defaultdict mit OrderedDict problem

Verfasst: Dienstag 14. Mai 2013, 10:58
von mit
Danke