Chciałem przetestować, czy klucz istnieje w słowniku przed aktualizacją wartości dla tego klucza. Napisałem następujący kod:
if 'key1' in dict.keys():
print "blah"
else:
print "boo"
Myślę, że to nie jest najlepszy sposób na wykonanie tego zadania. Czy istnieje lepszy sposób na przetestowanie klucza w słowniku?
Nie musisz dzwonić po klucze:
if 'key1' in dict:
print "blah"
else:
print "boo"
Będzie to o wiele szybsze, ponieważ używa hashowania słownika' w przeciwieństwie do wyszukiwania liniowego, co zrobiłoby wywołanie kluczy.
Zalecałbym użycie metody setdefault
zamiast tego. Brzmi ona tak, jakby zrobiła wszystko, co chcesz.
>>> 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}