Preveri, ali dani ključ že obstaja v slovarju

Pred posodobitvijo vrednosti ključa sem želel preveriti, ali ključ obstaja v slovarju. Napisal sem naslednjo kodo:

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

Mislim, da to ni najboljši način za izvedbo te naloge. Ali obstaja boljši način za testiranje ključa v slovarju?

Ni vam treba klicati ključev:

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

To bo veliko hitrejše, saj se uporabi hashanje slovarja, ne pa linearno iskanje, ki bi ga opravil klic ključev.

Komentarji (13)

To lahko skrajšate:

if 'key1' in dict:
    ...

Vendar je to kvečjemu kozmetična izboljšava. Zakaj menite, da to ni najboljši način?

Komentarji (4)

Namesto tega priporočam uporabo metode setdefault. Zdi se, da bo naredila vse, kar želite.

>>> 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}
Komentarji (6)