将字典y合并到字典x中,若x中没有y中的key则x执行添加操作,若x中已有对应key则执行更新操作
merge(dict x , dict y)
若y==none 则直接返回x即可
若x==none,则将x复制y返回
若y!=none and x!=none ,则取出x keys以及y keys 遍历y的每一个key:
若ykey在xkeys中不存在,则在x中添加相应ykey以及相应value
若yKey在xkeys中存在:
若ykey在x中对应value不是dict,则直接更新value=y中ykey对应值即可
若ykey在x中对应value是dict,则递归调用 merge(dict x[ykey], dict y[ykey])
代码如下:
def merge(x, y):
#python中dict为引用传递
#x==None 直接复制y返回
if x==None:
x = y
return x
#y==None 直接返回x即可
if y==None:
return x
#x,y都非空
xkeys = list(x.keys())
ykeys = list(y.keys())
for yk in ykeys:
#没有则进行添加
if yk not in xkeys:
x[yk] = y[yk]
#存在该key
if yk in xkeys:
#print (type(x[yk]).__name__)
#该key对应value类性不为dict 则更新操作
if type(x[yk]).__name__ != 'dict':
x[yk] = y[yk]
#对应类型为dict则递归调用
else:
merge(x[yk], y[yk])
return x
简化如下:
def merge2(x, y):
#python中dict为引用传递
#x==None 直接复制y返回
if x==None:
x = y
return x
#y==None 直接返回x即可
if y==None:
return x
#x,y都非空
xkeys = list(x.keys())
ykeys = list(y.keys())
for yk in ykeys:
if yk in xkeys and type(x[yk]).__name__ == 'dict':
merge(x[yk], y[yk])
else:
x[yk] = y[yk]
return x
0.边界条件的判断:
1.python中函数参数传递问题:
list dict为可变类型,函数传递相当于指针传递会改变原来的值
2. python中数据类型判断:
type(x[yk]).__name__ != 'dict'
3. python中dict字典应用:
查找:
更新以及新增:
删除: