Merging two dictionaries
Peter Otten
__peter__ at web.de
Mon Aug 2 04:09:35 EDT 2010
Douglas Garstang wrote:
> I have the two dictionaries below. How can I merge them, such that:
>
> 1. The cluster dictionary contains the additional elements from the
> default dictionary.
> 2. Nothing is removed from the cluster dictionary.
def inplace_merge(default, cluster):
assert isinstance(default, dict)
assert isinstance(cluster, dict)
d = set(default)
c = set(cluster)
default_only = d - c
both = d & c
for key in both:
dv = default[key]
cv = cluster[key]
if isinstance(cv, dict):
inplace_merge(dv, cv)
cluster.update((dk, default[dk]) for dk in default_only)
should work once you've fixed your example dicts.
Peter
More information about the Python-list
mailing list