Halusin testata, onko avain olemassa sanakirjassa ennen avaimen arvon päivittämistä. Kirjoitin seuraavan koodin:
if 'key1' in dict.keys():
print "blah"
else:
print "boo"
Mielestäni tämä ei ole paras tapa suorittaa tämä tehtävä. Onko parempaa tapaa testata avainta sanakirjassa?
Sinun ei tarvitse soittaa avaimiin:
if 'key1' in dict:
print "blah"
else:
print "boo"
Se on paljon nopeampaa, koska se käyttää sanakirjan's hashingia eikä lineaarista hakua, joka tehtäisiin kutsumalla keys.
Suosittelen sen sijaan käyttämään menetelmää setdefault
. Se kuulostaa siltä, että se tekee kaiken haluamasi.
>>> 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}