Pārbaudīt, vai dotā atslēga jau pastāv vārdnīcā

Pirms atslēgas vērtības atjaunināšanas vēlējos pārbaudīt, vai vārdnīcā pastāv atslēga. Es uzrakstīju šādu kodu:

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

Manuprāt, tas nav labākais veids, kā izpildīt šo uzdevumu. Vai ir kāds labāks veids, kā pārbaudīt atslēgas atrašanu vārdnīcā?

Jums nav jāizsauc atslēgas:

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

Tas būs daudz ātrāk, jo tiek izmantota vārdnīcas šifrēšana, nevis lineārā meklēšana, ko veiktu, izsaucot atslēgas.

Komentāri (13)

To var saīsināt:

if 'key1' in dict:
    ...

Tomēr tas labākajā gadījumā ir tikai kosmētisks uzlabojums. Kāpēc, jūsuprāt, tas nav labākais veids?

Komentāri (4)

Tā vietā es ieteiktu izmantot setdefault metodi. Izklausās, ka tā darīs visu, ko vēlaties.

>>> 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}
Komentāri (6)