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的常用操作(中)

TAG:Python | Python入门 | Python教程 |