Ich wollte testen, ob ein Schlüssel in einem Wörterbuch vorhanden ist, bevor ich den Wert für den Schlüssel aktualisiere. Ich habe den folgenden Code geschrieben:
if 'key1' in dict.keys():
print "blah"
else:
print "boo"
Ich denke, dass dies nicht der beste Weg ist, um diese Aufgabe zu erfüllen. Gibt es eine bessere Möglichkeit, nach einem Schlüssel im Wörterbuch zu suchen?
Sie müssen keine Schlüssel anrufen:
if 'key1' in dict:
print "blah"
else:
print "boo"
Das ist viel schneller, da es das Hashing des Wörterbuchs verwendet, anstatt eine lineare Suche durchzuführen, was der Aufruf von keys tun würde.
Sie können dies abkürzen:
if 'key1' in dict:
...
Dies ist jedoch bestenfalls eine kosmetische Verbesserung. Warum glauben Sie, dass dies nicht der beste Weg ist?
Ich würde empfehlen, stattdessen die Methode "setdefault" zu verwenden. Das klingt so, als ob es alles tun würde, was Sie wollen.
>>> d = {'foo':'bar'}
>>> q = d.setdefault('foo','baz') #Do not override the existing key
>>> print q #The value takes what was originally in the dictionary
bar
>>> print d
{'foo': 'bar'}
>>> r = d.setdefault('baz',18) #baz was never in the dictionary
>>> print r #Now r has the value supplied above
18
>>> print d #The dictionary's been updated
{'foo': 'bar', 'baz': 18}