Adding to an Array inside a Dict

Robert Kern robert.kern at gmail.com
Mon Oct 11 15:10:49 EDT 2010


On 10/11/10 1:29 PM, MRAB wrote:
> On 11/10/2010 15:55, MacOSX @ Rocteur.cc 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]})

No, that really doesn't do what the OP wants.

from collections import defaultdict

osmdict = defaultdict(lambda: defaultdict(list))

...
osmdict[token]['user'].append(user)
osmdict[token]['reason'].append(reason)

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
  that is made terrible by our own mad attempt to interpret it as though it had
  an underlying truth."
   -- Umberto Eco




More information about the Python-list mailing list