合併詞典
請考慮以下詞典:
>>> fish = {'name': "Nemo", 'hands': "fins", 'special': "gills"}
>>> dog = {'name': "Clifford", 'hands': "paws", 'color': "red"}
Python 3.5+
>>> fishdog = {**fish, **dog}
>>> fishdog
{'hands': 'paws', 'color': 'red', 'name': 'Clifford', 'special': 'gills'}
如此示例所示,重複鍵對映到其 lattermost 值(例如 Clifford
覆蓋 Nemo
)。
Python 3.3+
>>> from collections import ChainMap
>>> dict(ChainMap(fish, dog))
{'hands': 'fins', 'color': 'red', 'special': 'gills', 'name': 'Nemo'}
使用這種技術,最重要的值優先於給定的鍵而不是最後一個(Clifford
被拋棄而支援 Nemo
)。
Python 2.x,3.x
>>> from itertools import chain
>>> dict(chain(fish.items(), dog.items()))
{'hands': 'paws', 'color': 'red', 'name': 'Clifford', 'special': 'gills'}
這使用 lattermost 值,與基於**
的合併技術一樣(Clifford
覆蓋 Nemo
)。
>>> fish.update(dog)
>>> fish
{'color': 'red', 'hands': 'paws', 'name': 'Clifford', 'special': 'gills'}
dict.update
使用後一個 dict 來覆蓋前一個。