776 Stimmen

Geben Sie einen Standardwert zurück, wenn ein Wörterbuchschlüssel nicht verfügbar ist

Ich brauche eine Möglichkeit, den Wert eines Wörterbuchs abzurufen, wenn sein Schlüssel vorhanden ist, oder einfach None zurückzugeben, wenn er nicht vorhanden ist.

Python wirft jedoch eine KeyError-Ausnahme, wenn Sie nach einem nicht vorhandenen Schlüssel suchen. Ich weiß, dass ich nach dem Schlüssel suchen kann, aber ich suche nach etwas expliziterem. Gibt es eine Möglichkeit, einfach None zurückzugeben, wenn der Schlüssel nicht vorhanden ist?


<strong>Siehe auch:</strong> <a href="https://stackoverflow.com/q/11041405">Warum dict.get(key) anstelle von dict[key]?</a>

1302voto

Tim Pietzcker Punkte 311448

Sie können dict.get() verwenden

value = d.get(key)

was None zurückgibt, wenn key nicht in d ist. Sie können auch einen anderen Standardwert angeben, der anstelle von None zurückgegeben wird:

value = d.get(key, "leer")

72voto

John La Rooy Punkte 278961

Frage dich nicht weiter. Es ist in die Sprache integriert.

    >>> help(dict)

    Hilfe zu Klasse dict im Modul builtins:

    class dict(object)
     |  dict() -> neues leeres Wörterbuch
     |  dict(mapping) -> neues Wörterbuch initialisiert aus einem Mapping-Objekt
     |      (Schlüssel, Wert) Paaren
    ...
     |  
     |  get(...)
     |      D.get(k\[,d\]) -> D\[k\], wenn k in D, andernfalls d.  d standardmäßig None.
     |  
    ...

35voto

dusktreader Punkte 3544

Sie sollten die get()-Methode der dict-Klasse verwenden

d = {}
r = d.get('missing_key', None)

Dies führt dazu, dass r == None ist. Wenn der Schlüssel nicht im Wörterbuch gefunden wird, gibt die get-Funktion das zweite Argument zurück.

35voto

Daenyth Punkte 33328

Verwenden Sie dict.get

Gibt den Wert für den Schlüssel zurück, wenn der Schlüssel im Wörterbuch vorhanden ist, ansonsten den Standardwert. Wenn kein Standardwert angegeben wird, wird standardmäßig None zurückgegeben, sodass diese Methode niemals einen KeyError auslöst.

27voto

job Punkte 8605

Normalerweise verwende ich ein defaultdict für Situationen wie diese. Sie liefern eine Factory-Methode, die keine Argumente entgegennimmt und einen Wert erstellt, wenn ein neuer Schlüssel gesehen wird. Es ist nützlicher, wenn Sie etwas wie eine leere Liste bei neuen Schlüsseln zurückgeben möchten (siehe die Beispiele).

from collections import defaultdict
d = defaultdict(lambda: None)
print d['neuer_schlüssel']  # gibt 'None' aus

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X