首頁 >後端開發 >Python教學 >怎麼合併兩個字典

怎麼合併兩個字典

藏色散人
藏色散人原創
2019-06-24 11:02:4932254瀏覽

怎麼合併兩個字典

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

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

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

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

然而,此方法合併時所用時間較長,效率較高的程式碼為:

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

dictMerged2 = dict( dict1, **dict2 )

這種方法使用的是dict()工廠方法(Python2.2以上版本)。如果輸入參數是另一個字典(此處為dict1),則在呼叫該工廠方法時會從dict1複製內容以產生新的字典。此工廠方法從Python2.3版本開始,允許接受字典或關鍵字參數字典進行呼叫。

但應注意,對於這種呼叫方式,dict()最多只接受一個參數(或一組name=value的可變長參數),而不會再接受另一個字典。因此直覺上的簡單使用dict1與dict2兩個參數的方法會提示如下錯誤:

>>> dictMerged = dict( dict1, dict2 )
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: dict expected at most 1 arguments, got 2

這也就是我們看到上面的方法2中使用的是**dict2的原因。熟悉C的朋友應注意,在這裡*的意思並不代表指針,這是Python中可變長函數參數的寫法(關於可變長函數參數的相關知識見本文)。在這裡,**的意思是基於字典的可變長函數參數。

方法2執行的是如同下面方法3中的程式碼,也就是先將dict1拷貝給dictMerged,在執行update()操作:

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

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教學

以上是怎麼合併兩個字典的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn