39 lines
686 B
Python
39 lines
686 B
Python
|
|
||
|
def arrayExtend(s,addon):
|
||
|
ret = []
|
||
|
s_cnt = len(s)
|
||
|
a_cnt = len(addon)
|
||
|
for i,v in enumerate(addon):
|
||
|
if i < s_cnt:
|
||
|
if type(v)!=type(s[i]):
|
||
|
ret.append(v)
|
||
|
continue
|
||
|
if isinstance(v,dict):
|
||
|
x = dictExtend(v,s[i])
|
||
|
ret.append(x)
|
||
|
continue
|
||
|
ret.append(v)
|
||
|
if s_cnt < a_cnt:
|
||
|
ret += s[i:]
|
||
|
return ret
|
||
|
|
||
|
def dictExtend(s,addon):
|
||
|
ret = {}
|
||
|
ret.update(s)
|
||
|
skeys = ret.keys()
|
||
|
for k,v in addon.items():
|
||
|
if k not in skeys:
|
||
|
ret[k] = v
|
||
|
continue
|
||
|
if type(v)!=type(ret[k]):
|
||
|
ret[k] = v
|
||
|
continue
|
||
|
if type(v)==type({}):
|
||
|
ret[k] = dictExtend(ret[k],v)
|
||
|
continue
|
||
|
if type(v)==type([]):
|
||
|
ret[k] = arrayExtend(ret[k],v)
|
||
|
continue
|
||
|
ret[k] = v
|
||
|
return ret
|