Исках да проверя дали даден ключ съществува в речника, преди да актуализирам стойността на ключа. Написах следния код:
if 'key1' in dict.keys():
print "blah"
else:
print "boo"
Мисля, че това не е най-добрият начин за изпълнение на тази задача. Има ли по-добър начин за тестване на ключ в речника?
Не е нужно да се обаждате на ключове:
if 'key1' in dict:
print "blah"
else:
print "boo"
Това ще бъде много по-бързо, тъй като се използва хеширането на речника, а не линейното търсене, което би се извършило с извикване на ключовете.
Можете да го съкратите:
if 'key1' in dict:
...
Това обаче е най-малкото козметично подобрение. Защо смятате, че това не е най-добрият начин?
Бих препоръчал вместо това да използвате метода setdefault
. Изглежда, че той ще направи всичко, което искате.
>>> 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}