Schlüsselnamen anstatt Wert in Liste speichern
Verfasst: Donnerstag 4. November 2010, 17:38
Hallo! Ich programmiere mir gerade einen Vokabeltrainer. Ich speicher die Vokabeln als Wörterbücher mit ``pickle``. Wenn ich die Vokabel richtig eingebe, dann soll die Vokabel aus dem Wörterbuch verschwinden, ansonsten bleibt sie drin. Ich habe mir überlegt eine Liste zu haben, in der die Schlüssel (!) der Vokabeleinträge, die weg dürfen, gespeichert werden und am Ende sollen die Einträge, so wie ich sie im Quelltext zu löschen versuche, entfernt werden. Aber mir wird ja immer der Wert des Schlüssels in der Liste gespeichert. Wie kann ich den Schlüsselnamen speichern?
EDIT: Bitte nur Lösungsansätze posten. Ich möchte auch etwas selber herausfinden, etwas dabei lernen 
Code: Alles auswählen
#!/usr/bin/env python
import os
import cPickle as p
with open('list.pickle', 'r') as f:
vocabulary = p.load(f)
to_delete = []
for key in vocabulary:
quest = raw_input("Was bedeutet {0} auf Deutsch? ".format(key))
if quest == vocabulary.get(key):
print "Gut gemacht, richtig!"
to_delete.append(vocabulary[key])
# Ich moechte hier den Schluesselnamen und nicht den Wert!
else:
print "Schade, es ist falsch!"
for element in to_delete:
del vocabulary[element]
# Funktioniert natuerlich nicht. Ein KeyError wird stattdessen ausgegeben.
# Und hier wird dann spaeter der Teil mit pickle reinkommen
print vocabulary