Ich habe das folgende Wörterbuch in Python:
d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}
Ich muss herausfinden, ob in diesem Wörterbuch ein Wert wie "eins" oder "zwei" vorhanden ist.
Wenn ich zum Beispiel wissen wollte, ob der Index "1" existiert, müsste ich einfach Folgendes eingeben:
"1" in d
Und dann würde Python mir sagen, ob das wahr oder falsch ist, aber ich muss genau dasselbe tun, außer um herauszufinden, ob ein Wert existiert.
python
dictionary
find
JimmyK
quelle
quelle
d
sind die Timings praktisch bedeutungslos. In Python 3dict.values()
ist standardmäßig eine Wörterbuchansicht vorhanden, unddict.itervalues()
unddict.viewvalues()
sind verschwunden. Sie können dies erneut testen (mit einem größeren Wörterbuch) und verwendenlist(d.values())
, um das Python 2-Verhalten unditer(d.values())
dasdict.itervalues()
Verhalten abzurufen. Da beide Versionen jedoch eine globale Suche und einen globalen Aufruf erfordern, sind sie absolut langsamer. Beide erledigen zusätzliche Arbeit, die nicht benötigt wird.Sie können verwenden
um zu testen, ob
"one"
es zu den Werten Ihres Wörterbuchs gehört.quelle
Das Python-Wörterbuch hat eine (Schlüssel-) Funktion
Beispielsweise,
Wenn Ihr Schlüssel nicht vorhanden ist, wird ein
none
Wert zurückgegeben.Inhalt, der für Versionen unter 3.0 und höher als 5.0 relevant ist. .
quelle
key:value
und nicht nach einem Schlüssel.Verwenden Sie Wörterbuchansichten:
quelle
Es gibt verschiedene Typen zur Überprüfung der Werte
Was ist, wenn Liste der Werte
Was ist, wenn eine Liste von Werten mit Zeichenfolgenwerten
quelle
value in [... list comprehension over sequence ...]
, verwenden Sieany(value in sequence ...)
, um zu vermeiden, dass ein Listenobjekt erstellt wird, das Sie für nichts anderes verwenden, und um einen Kurzschluss zu verursachen, wenn der Wert gefunden wurde.In Python 3 können Sie die
values()
Funktion des Wörterbuchs verwenden. Es gibt ein Ansichtsobjekt der Werte zurück. Dies kann wiederum an dieiter
Funktion übergeben werden, die ein Iteratorobjekt zurückgibt. Der Iterator kann folgendermaßen überprüft werdenin
:Sie können das Ansichtsobjekt auch direkt verwenden, da es einer Liste ähnelt
quelle
iter()
eine Wörterbuchansicht zu verwenden.in
verwendet das Objekt bereits als iterable (der Typ implementiert keine dedizierte__contains__
Methode). Der einzige Unterschied zwischen'one' in iter(d.values())
und'one in d.values()
besteht darin, dass Sie Python dazu gebracht haben, zusätzliche Arbeit zu leisten (die Kosten für eine globale Suche zu bezahleniter
).