Kontroller, om en given nøgle allerede findes i en ordbog

Jeg ønskede at teste, om en nøgle findes i en ordbog, før jeg opdaterer værdien for nøglen. Jeg skrev følgende kode:

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

Jeg tror ikke, at dette er den bedste måde at udføre denne opgave på. Er der en bedre måde at teste for en nøgle i ordbogen på?

Du behøver ikke at ringe til nøgler:

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

Det vil være meget hurtigere, da det bruger ordbogens hashing i modsætning til at lave en lineær søgning, som at kalde keys ville gøre.

Kommentarer (13)

Du kan forkorte dette:

if 'key1' in dict:
    ...

Dette er dog i bedste fald en kosmetisk forbedring. Hvorfor mener du, at det ikke er den bedste måde?

Kommentarer (4)

Jeg vil anbefale at bruge metoden setdefault i stedet. Det lyder som om den vil gøre alt det, du ønsker.

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