Tarkista, onko annettu avain jo olemassa sanakirjassa.

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.

Kommentit (13)

Voit lyhentää tätä:

if 'key1' in dict:
    ...

Tämä on kuitenkin korkeintaan kosmeettinen parannus. Miksi uskot, että tämä ei ole paras tapa?

Kommentit (4)

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