演算法18--合併兩個字典
阿新 • • 發佈:2019-01-31
將字典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字典應用:
查詢:
更新以及新增:
刪除: