Problem mit der get-Methode eines Wörterbuches
Verfasst: Montag 1. Juli 2013, 13:03
Hallo,
ich habe folgenden String:
Den möchte ich jetzt in die Bestandteile (d.h. jedes Zeichen) zerlegen und in eine neue Liste speichern. Dabei soll allerdings das „m“ durch eine Zahl ersetzt werden, die ich einem Wörterbuch definiert habe:
Die anderen Zahlen sollen so bleiben wie sie sollen und als Integer in der Liste gespeichert werden. Ich habe jetzt gelesen, dass man das mit folgendem Einzeiler machen könnte (klick):
Wenn ich das ausführe, kommt allerdings folgender Fehler:
Wenn ich nur schreibe, dann lautet nachher das Ergebnis der Liste „[None, None, None, None]“. Bei kommt dann ein ['1', '0', '0', 'm'] heraus.
Wenn ich das gleiche wie in der oben verlinkten Webseite eintrage, dann funktioniert es allerdings. Wo ist denn da jetzt mein Unterschied? Kann mir da jemand helfen?
Danke
ich habe folgenden String:
Code: Alles auswählen
string = "100m"Code: Alles auswählen
nummern = {"m":10000}Code: Alles auswählen
nummer_liste = [nummern.get(x, int(x)) for x in string]Jetzt verstehe ich nicht genau, wieso das so ist. Die Logik ist doch bei der get-Methode, dass er zuerst schaut, ob der Buchstabe im Wörterbuch drin ist, und wenn ja, er das dann ersetzt. Wenn nicht, soll er nur den Buchstaben in ein Integer wandeln. Aber bei dem „m“ scheint er gar nicht erst im Wörterbuch nachzuschauen, bzw. es nicht zu finden.ValueError: invalid literal for int() with base 10: 'm'
Wenn ich nur
Code: Alles auswählen
nummer_liste = [nummern.get(x) for x in string]Code: Alles auswählen
nummer_liste = [nummern.get(x, x) for x in string]Wenn ich das gleiche wie in der oben verlinkten Webseite eintrage, dann funktioniert es allerdings. Wo ist denn da jetzt mein Unterschied? Kann mir da jemand helfen?
Danke