Volevo testare se una chiave esiste in un dizionario prima di aggiornare il valore della chiave. Ho scritto il seguente codice:
if 'key1' in dict.keys():
print "blah"
else:
print "boo"
Penso che questo non sia il modo migliore per realizzare questo compito. C'è un modo migliore per testare una chiave nel dizionario?
Non è necessario chiamare le chiavi:
if 'key1' in dict:
print "blah"
else:
print "boo"
Questo sarà molto più veloce in quanto utilizza l'hashing del dizionario invece di fare una ricerca lineare, come farebbe chiamando keys.
Raccomanderei invece di usare il metodo setdefault
. Sembra che farà tutto quello che vuoi.
>>> 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}