Проверка дали даден ключ вече съществува в речника

Исках да проверя дали даден ключ съществува в речника, преди да актуализирам стойността на ключа. Написах следния код:

if 'key1' in dict.keys():
  print "blah"
else:
  print "boo"

Мисля, че това не е най-добрият начин за изпълнение на тази задача. Има ли по-добър начин за тестване на ключ в речника?

Не е нужно да се обаждате на ключове:

if 'key1' in dict:
  print "blah"
else:
  print "boo"

Това ще бъде много по-бързо, тъй като се използва хеширането на речника, а не линейното търсене, което би се извършило с извикване на ключовете.

Коментари (13)

Можете да го съкратите:

if 'key1' in dict:
    ...

Това обаче е най-малкото козметично подобрение. Защо смятате, че това не е най-добрият начин?

Коментари (4)

Бих препоръчал вместо това да използвате метода 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}
Коментари (6)