Better dict merging (less side-effectful)

This commit is contained in:
Anders Ingemann 2014-12-31 13:40:16 +01:00
parent b6976eb6e9
commit a241842ef9

View file

@ -32,15 +32,11 @@ def merge_dicts(*args):
def clone(obj):
copy = obj
if isinstance(obj, dict):
copy = {}
for key, value in obj.iteritems():
copy[key] = clone(value)
copy = {key: clone(value) for key, value in obj.iteritems()}
if isinstance(obj, list):
copy = []
copy.extend(obj)
copy = [clone(value) for value in obj]
if isinstance(obj, set):
copy = set()
copy.update(obj)
copy = set([clone(value) for value in obj])
return copy
def merge(a, b, path=[]):