Python中字典合併的實現方法
本文首發於我的個人官網: liyangbit.com
背景
Python 中有時候需要將字典進行合併,今天我們來探討下這個主題。
先來看看下面的運行結果
x = {a:1, b:2}ny = {b:4, c:5}nz = x.update(y)n
來看看 z 的返回結果:
print(z)nnNonen
發現 z 返回的是None值,並不是我們想要的結果。
再來看一下此時 x 的返回結果,發現 x 已經是合併的結果。
xnn{a: 1, b: 4, c: 5}n
那麼有沒有比較簡單的實現方法呢。下面我們來探索一下:
Methon1:適用於Python3.5及以上版本呢
在 Python3.5 以上版本(含3.5),可以通過下列方法實現
z1 = {**x, **y}nz1nn{a: 1, b: 4, c: 5}n
Method2:自定義函數
如果在 Python2 或 Python3.4 以及低於3.4的版本,要實現兩個 dict 的合併,該怎樣做呢?
先定義一個函數,然後用自定義函數來運行
def merge(x,y):n z = x.copy()n z.update(y)n return znnz2 = merge(x,y)nz2nn{a: 1, b: 4, c: 5}n
Method2 在 Python3.5 以上版本也是可以運行的。
此外,請注意 x 中 b=2, y 中 b=4, 而運算結果中 b=4,是用 y 中 b的值來對字典進行更新。
多個 dict 進行合併
如果是多個 dictionary 需要進行合併呢?
同樣可以通過自定義的形式來實現。
def merge_dicts(*dict_args):n result = {}n for item in dict_args:n result.update(item)n return resultnnx1 = {a:1, b:2}ny1 = {b:4, c:5}nx2 = {d:8, e:10}nnz3 = merge_dicts(x1,y1,x2)nz3nn{a: 1, b: 4, c: 5, d: 8, e: 10}n
此方法在 Python2 和 Python3 下都是可以運行的
對我的文章感興趣的朋友,可以關注我的微信公眾號(ID:PyDataRoad),接收我的更新通知。
推薦閱讀:
※Python入門 面向對象編程基礎
※如何系統的自學Python?
※從零開始寫Python爬蟲 --- 導言
※Python從零開始系列連載(3)——jupyter的常用操作(中)