[Tutor] merging dictionary values based on key

ski norman at khine.net
Fri Mar 13 00:05:06 CET 2009


how would you do this for a specific key instead of all the keys?

greg whittier wrote:
> On Thu, Mar 12, 2009 at 4:24 PM, ski <norman at khine.net> wrote:
>> Hello,
>> I have this issue, which I am unsure on how to solve.
>>
>>>>> mylist1 = {'a': 'x123', 'b':'12'}
>>>>> mylist2 = {'a': 'x234', 'c': 'a23'}
>>>>> for k in mylist2:
>> ...     if k in mylist1:
>> ...             mylist1[k] = [mylist1[k], mylist2[k]]
>> ...     else:
>> ...             mylist1[k] = mylist2[k]
>> ...
>>>>> mylist1
>> {'a': ['x123', 'x234'], 'c': 'a23', 'b': '12'}
>> this merges the two dictionaries, but what should be the method if:
>>
>>>>> mylist = [{'a': 'x123', 'b':'12'}, {'a': 'x234', 'b': 'd33', 'c':
>>>>> 'a23'}, {'a': 'x234', 'c': 'XX123'} .... ]
>> where mylist has nth number of dictionaries and i want to merge the values
>> of the keys that are the same?
>>
>> Thanks
>>
>> Norman
> 
> If I understand what you mean by merging, I  think you want
> 
> mylist = [{'a': 'x123', 'b':'12'}, {'a': 'x234', 'b': 'd33', 'c':
> 'a23'}, {'a': 'x234', 'c': 'XX123'} .... ]
> merged_dict = {}
> for dictionary in mylist:
>     for key, value in dictionary.items():
>         merged_dict.setdefault(key,[]).append(value)
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
> 



More information about the Tutor mailing list