Python合并字典
示例
考虑以下字典:
>>> fish = {'name': "Nemo", 'hands': "fins", 'special': "gills"} >>> dog = {'name': "Clifford", 'hands': "paws", 'color': "red"}
Python3.5+
>>> fishdog = {**fish, **dog} >>> fishdog {'hands': 'paws', 'color': 'red', 'name': 'Clifford', 'special': 'gills'}
如本示例所示,重复的键映射到它们的最后一个值(例如,“Clifford”覆盖“Nemo”)。
Python3.3以上
>>> from collections import ChainMap >>> dict(ChainMap(fish, dog)) {'hands': 'fins', 'color': 'red', 'special': 'gills', 'name': 'Nemo'}
使用此技术,给定键的最前值优先,而不是最后一个(“Clifford”被抛弃,取而代之的是“Nemo”)。
Python2.x,3.x
>>> from itertools import chain >>> dict(chain(fish.items(), dog.items())) {'hands': 'paws', 'color': 'red', 'name': 'Clifford', 'special': 'gills'}
与**基于-的合并技术一样,它使用后一个值(“Clifford”覆盖“Nemo”)。
>>> fish.update(dog) >>> fish {'color': 'red', 'hands': 'paws', 'name': 'Clifford', 'special': 'gills'}
dict.update使用后一个字典覆盖前一个字典。