Adding to an Array inside a Dict

Arnaud Delobelle arnodel at
Mon Oct 11 21:55:26 CEST 2010

MRAB <python at> writes:

> On 11/10/2010 15:55, MacOSX @ wrote:
>> Hi,
>> Is there an easier way to do this, I am adding/creating to an array
>> inside a dict but can find a cleaner way:
>> So I first check if the key exists already, if it does then I know I use
>> append, if it does not I create it.
>>          if osmdict.has_key(token):
>>              osmdict[token]['user'].append(user)
>>              osmdict[token]['reason'].append(reason)
>>          else:
>>              osmdict[token] = { 'user' : [user], 'reason' : [reason]}
>> Sorry if I've completely overlooked the obvious,
>> Thanks in advance,
> osmdict.setdefault(token, {}).update({'user': [user], 'reason': [reason]})

The above will overwrite the 'user' and 'reason' items in the osmdict[token]
dictionary if they already exist, which is not what the OP wants.

If osmdict can be a defaultdict you could do:

from collections import defaultdict

osmdict = defaultdict(defaultdict(list))

# Later, simply:


More information about the Python-list mailing list