Python中如何實現兩個字典合併

2021-07-06 10:15:00 字數 1486 閱讀 2269

python中將兩個字典進行合併操作,是乙個比較常見的問題。本文將介紹幾種實現兩個字典合併的方案,並對其進行比較。

對於這個問題,比較直觀的想法是將兩個字典做相加操作,賦值給結果字典,其**為:

python兩個字典合併(方法1)

python

dictmerged1 = dict( dict1.items() + dict2.items() )

然而,該方法合併時所用時間較長,效率更高的**為:

python兩個字典合併(方法2)

python

dictmerged2 = dict( dict1, **dict2 )
這種方法使用的是dict()工廠方法(python2.2以上版本)。如果輸入引數是另乙個字典(此處為dict1),則呼叫該工廠方法時會從dict1中複製內容生成新的字典。該工廠方法從python2.3版本開始,允許接受字典或關鍵字引數字典進行呼叫。但應當注意,對於這種呼叫方式,dict()最多隻接受乙個引數(或者說是一組name=value的可變長引數),而不會再接受另乙個字典。因此直觀上的簡單使用dict1與dict2兩個引數的方法會提示如下錯誤:

python

>>> dictmerged = dict( dict1, dict2 )

traceback (most recent call last):

file "", line 1, in typeerror: dict expected at most 1 arguments, got 2

這也就是我們看到上面的方法2中使用的是**dict2的原因。熟悉c的朋友應當注意,在這裡*的意思並不代表指標,這是python中可變長函式引數的寫法(關於可變長函式引數的相關知識見

本文)。在這裡,**的意思是基於字典的可變長函式引數。

方法2執行的是如同下面方法3中的**,即先將dict1拷貝給dictmerged,在執行update()操作:

python兩個字典合併(方法3)

python

dictmerged3 = dict1.copy()

dictmerged3.update( dict2 )

對於第一步的複製操作而言,這種使用內建方法copy()的複製方式,和方法2中的複製結果是一樣的,但根據《core python programming (2nd edition)》一書中7.3.2節所述,從已存在字典中生成新字典的方式dictnew = dict( dictold )較內建方法dictnew = dictold.copy()會慢一些,因此書中推薦使用copy()方法。

因此,從這幾種方式看來,方法3的效率最高,並且**也比較易讀。

python實現兩個字典合併,兩個list合併

1.兩個字典 a b 合併1 dict a,b 操作如下 a b dict a,b 合併2 dict a.items b.items 如www.cppcns.com下 a b dict a.items b.items 合併3 c c.update a c.update b 輸出c 如下 a b bg...

python判斷兩個字典是否相同

python自帶的資料結構dict非常好用,之前不知道怎麼比較2個字典是否相同,做法是乙個乙個key比較過去。現在想到可以直接用 進行判斷!a dict one 1,two 2,three 3 b c dict zip one two three 1,2 3 d dict two 2 one 1 t...

查詢兩個字典物件中公共元素

有兩個字典物件,想要找出相同的元素 相同的鍵和值,key value a b 我們可以使用集合 set 裡面的操作。find keys in common a.keys b.keys find keys in a that are not in b a.keys b.keys find key,va...