[Tutor] merging dictionary values based on key

greg whittier greg at thewhittiers.com
Thu Mar 12 21:32:51 CET 2009


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)


More information about the Tutor mailing list