2010-04-29 5 views
8

Ich bekomme einen KeyError für einen Schlüssel außerhalb des Wörterbuchs, obwohl ich weiß, dass der Schlüssel tatsächlich im Wörterbuch ist. Irgendwelche Ideen, was das verursachen könnte?Python löst einen KeyError (für einen Out-of-Dictionary-Schlüssel) aus, obwohl der Schlüssel IS im Verzeichnis

print G.keys() 

gibt die folgenden:

['24', '25', '20', '21', '22', '23', '1', '3', '2', '5', '4', '7', '6', '9', '8', '11', '10', '13', '12', '15', '14', '17', '16', '19', '18'] 

aber wenn ich versuche, einen Wert im Wörterbuch auf der nächsten Zeile Code für den Zugriff auf ...

for w in G[v]: #note that in this example, v = 17 

ich folgende Fehlermeldung erhalten Nachricht:

KeyError: 17 

Jede Hilfe, Tipps oder Ratschläge werden alle geschätzt. Vielen Dank.

+0

Noch eine Sache wert, ich habe versucht, Zugriff auf verschiedene Schlüsselwerte (1, 2, 3, etc.) und immer noch die gleichen Ergebnisse. – ignorantslut

+3

Ist v auf 17 oder '17' eingestellt? – Syntactic

Antwort

26

so einfach ist, 17 != '17'

+0

Wow, ich fühle mich wie ein Idiot. Ich lese diese Werte aus einer Datei, aus irgendeinem Grund ist mir das nicht aufgefallen - danke! – ignorantslut

+1

Riecht wie ein Designfehler für mich. – tchrist

+0

@tchrist Fehlen von impliziten Umwandlungen von Ints zu Strings als Designfehler in der Sprache? – wRAR

5

Die Schlüssel-Strings sind, können Sie versuchen, sie als Ints zuzugreifen.

+0

Also? Dumm, dass das wichtig sein sollte. Das ist kein Java, weißt du! – tchrist

+2

@tchrist: Falsch. Python ist stark typisiert ... so wie es sein sollte. Das ist kein PHP, weißt du! (Yuck.) – FogleBird

3

versuchen Sie mit v = '17'. Sie müssen Ihr Int in eine Zeichenkette umwandeln

Verwandte Themen