dicts im shelve?

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.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

dicts im shelve?

Beitragvon Rebecca » Mittwoch 30. Juli 2008, 14:30

Warum geht folgendes nicht?

Code: Alles auswählen

>>> s = shelve.open("/tmp/s")
>>> s["a"] = {}
>>> s["a"]["b"] = 42
>>> s
{'a': {}}
>>> s["a"]["b"]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'b'
>>> s["a"]
{}


So wie ich die Doku verstehe, sollte es funktionieren:
shelve Doku hat geschrieben:values (not the keys!) in a shelf can be essentially arbitrary Python objects -- anything that the pickle module can handle

pickle Doku hat geschrieben:The following types can be pickled:
* None, True, and False
* integers, long integers, floating point numbers, complex numbers
* normal and Unicode strings
* tuples, lists, sets, and dictionaries containing only picklable objects
[...]
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Beitragvon sma » Mittwoch 30. Juli 2008, 14:42

Die Doku sagt:
Normally, d[key] returns a COPY of the entry. This needs care when mutable entries are mutated: for example, if d[key] is a list, d[key].append(anitem) does NOT modify the entry d[key] itself, as stored in the persistent mapping

Stefan
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Beitragvon Rebecca » Mittwoch 30. Juli 2008, 14:55

:idea: Danke!
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder