In meinem Python-Programm wird folgende Fehlermeldung angezeigt:
KeyError: 'variablename'
Aus diesem Code:
path = meta_entry['path'].strip('/'),
Kann jemand bitte erklären, warum dies geschieht?
python
dictionary
David Liaw
quelle
quelle
Key error
bedeutet im Allgemeinen, dass daskey
nicht existiert. Sind Sie sicher, dass es einen „Pfad“ gibt?meta_entry
und stellen Sie sicher, dass der gewünschte Schlüssel vorhanden ist.Antworten:
A
KeyError
bedeutet im Allgemeinen, dass der Schlüssel nicht vorhanden ist. Sind Sie sicher, dass derpath
Schlüssel vorhanden ist?Aus den offiziellen Python-Dokumenten:
Ausnahme KeyError
Beispielsweise:
Versuchen Sie also, den Inhalt von zu drucken
meta_entry
und zu überprüfen, ob erpath
vorhanden ist oder nicht.Oder Sie können tun:
quelle
path = meta_entry['path'].strip('/'),
ist Teil Ihres Codes oder der Engine. Wenn es Teil des Motors ist, kann ich leider nichts tun.print meta_entry
und zu überprüfen, ob es enthältpath
oder nicht.Ich stimme den wichtigsten Fehlerkommentaren voll und ganz zu. Sie können auch die get () -Methode des Wörterbuchs verwenden , um die Ausnahmen zu vermeiden. Dies kann auch verwendet werden, um einen Standardpfad anzugeben, anstatt
None
wie unten gezeigt.quelle
Zum Diktieren einfach verwenden
if key in dict
und nicht verwenden
if key in dict.keys()
Es wird zeitaufwändig sein
quelle
Ja, es wird höchstwahrscheinlich durch einen nicht vorhandenen Schlüssel verursacht.
In meinem Programm habe ich setdefault verwendet, um diesen Fehler aus Effizienzgründen stummzuschalten. je nachdem wie effizient diese Linie ist
Ich bin auch neu in Python. Tatsächlich habe ich es heute gerade gelernt. Verzeihen Sie mir die Unkenntnis der Effizienz.
In Python 3 können Sie auch diese Funktion verwenden:
Es wird gesagt, dass es niemals einen Schlüsselfehler auslösen wird.
quelle
Dies bedeutet, dass Ihrem Array der gesuchte Schlüssel fehlt. Ich behandle dies mit einer Funktion, die entweder den Wert zurückgibt, falls vorhanden, oder stattdessen einen Standardwert zurückgibt.
Ausgabe:
quelle
Ich habe diesen Fehler erhalten, als ich
dict
mit verschachtelt analysiert habefor
:Zurück verfolgen:
Denn in der zweiten Schleife sollte
cats[cat]
stattdessen nur seincat
(was ist nur ein Schlüssel)So:
Gibt
quelle
Wenn dies beispielsweise eine Zahl ist:
Es funktioniert perfekt, aber wenn Sie zum Beispiel verwenden:
Es funktioniert nicht, weil Ihre Eingabe die Zeichenfolge '1' zurückgibt. Sie müssen also int () verwenden
quelle
Lassen Sie es uns einfach machen, wenn Sie Python 3 verwenden
Wenn Sie eine andere Bedingung benötigen
Für den dynamischen Schlüsselwert können Sie auch den Try-Exception-Block verarbeiten
quelle