dictionary - Handle missing keys with numeric types in Python -


for mutable types, such list, instead of using if else, can deal missing key issues this:

dic = {'key1':[1, 2], 'key2':[1]} dic.setdefault('key3', []).append(1) 

which checks 'key3' in dic once.

but immutable types, such integer, cannot use setdefault() this:

dic = {'key1':3, 'key2':5} dic.setdefault('key3', 0) += 1 

since setdefault() return integer 0 instead of variable dic['key3']

i'm not sure how deal elegantly, example best can this:

dic = {'key1':3, 'key2':5} dic['key3'] = 1 if 'key3' not in dic else dic['key3'] + 1 

but code checks 'key3' in dic twice , use memory dic['key3'] + 1 if 'key3' exists.

any suggestions?

you can use .get(..) specify default value, like:

dic['key3'] = dic.get('key3',0) + 1

.get(key,default=none) performs lookup on dictionary. in case fails find key, return default.

but think in case, better use counter:

from collections import counter  counter = counter({'key1':3, 'key2':5}) counter['key3'] += 1

a counter assumes if key not present in database, value zero.


Comments

Popular posts from this blog

Command prompt result in label. Python 2.7 -

javascript - How do I use URL parameters to change link href on page? -

amazon web services - AWS Route53 Trying To Get Site To Resolve To www -