Rückgabe Keine, wenn der Wörterbuchschlüssel nicht verfügbar ist
Ich brauche einen Weg, um ein Wörterbuch Wert, wenn sein Schlüssel vorhanden ist, oder schicken Sie einfach Keines, wenn es keiner sieht.
Jedoch Python gibt eine key_error wenn Sie die Suche nach einem Schlüssel, der nicht vorhanden ist. Ich weiß, dass ich überprüfen kann für den Schlüssel, aber ich bin auf der Suche nach etwas expliziter. Gibt es eine Möglichkeit, nur zurück, "None", wenn der Schlüssel nicht vorhanden ist ?
Kommentar zu dem Problem
Verwenden Sie einfach
.get(key)
statt [Taste]
Ein dict löst eine KeyError-Ausnahme aus. Es nicht "return key_error".
Der Zugriff auf die Schlüssel und die exception zu fangen ist vollkommen in Ordnung in Python. Es ist auch eine bekannte und oft verwendeten design-Muster. Wenn du jetzt wieder Keiner statt, wird es unmöglich, speichern Keine als Wert, die relevant sein können, in einigen Fällen.
Manchmal möchten Sie zu behandeln, "None" - Einträge im Wörterbuch und fehlende Einträge die gleiche, in diesem Fall die akzeptierte Antwort scheint, den job zu erledigen just fine.
InformationsquelleAutor der Frage Spyros | 2011-05-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
get()
wird wieder
None
wennkey is not in d
. Sie können auch eine andere Standard-Wert zurückgegeben wird, anstattNone
:InformationsquelleAutor der Antwort Tim Pietzcker
Frage mich nicht mehr. Es ist gebaut in der Sprache.
InformationsquelleAutor der Antwort John La Rooy
Verwenden
dict.get
InformationsquelleAutor der Antwort Daenyth
Sollten Sie die
get()
Methode aus derdict
KlasseDadurch wird
r == None
. Wenn der Schlüssel nicht im Wörterbuch gefunden, wird die get-Funktion liefert das zweite argument.InformationsquelleAutor der Antwort dusktreader
Wenn Sie möchten, eine transparentere Lösung, Sie können eine Unterklasse
dict
um dieses Verhalten:InformationsquelleAutor der Antwort Björn Pollex
Normalerweise verwende ich eine defaultdict für Situationen wie diese. Sie liefern eine factory-Methode, die keine Argumente und schafft einen Wert, wenn es sieht einen neuen Schlüssel. Es ist nützlicher, wenn Sie zurückkehren wollen so etwas wie eine leere Liste auf neuen Schlüsseln (sehen Sie die Beispiele).
InformationsquelleAutor der Antwort job
Könnte man eine
dict
Objektget()
Methode, wie andere bereits vorgeschlagen. Alternativ, je nach genau das, was Sie tun, können Sie möglicherweise verwenden Sie einentry/except
- suite wie diese:Ist als ein sehr "Pythonic" Konzept für die Handhabung der Fall ist.
InformationsquelleAutor der Antwort martineau
Wie andere oben schon gesagt haben, verwenden Sie get().
Aber zu überprüfen, ob ein key, Sie können das auch tun:
InformationsquelleAutor der Antwort Marek P
Könnte man überschreiben
__missing__(self, key)
durch Unterklassen dict und zurück Keine.InformationsquelleAutor der Antwort Prashant Nair
Wenn Sie es tun können, mit
False
, dann gibt es auch die hasattr eingebaute funtion:InformationsquelleAutor der Antwort Evhz