为了实现 merge 前后都保持顺序,测试了不少方法,足足花了一个小时左右(从网上获取信息成字典,耗时较长)。所以有必要写出来分享一下。
from collections import OrderedDict
# example: "employ name", "employ ID"
dict_1 = OrderedDict({"Michael": "ali000001",
"Maria": "ali000002",
"Steve": "ali000003"})
dict_2 = OrderedDict({"Joseph": "ali000004",
"Kankan": "ali000005"})
merge_ordereddict = dict_1.copy()
merge_ordereddict.update(dict_2)
如果 dict_2 原本是无序的,那么 merge_ordereddict 最后仍然会是有序的,前面 dict_1 的顺序保持不变。 dict_1 必须是 OrderedDict type.
python3.5.x support:
merge_dict = OrderedDict({**dict_1, **dict_2})
使用 {**dict1, **dict2}
的方式可以合并 dict, 但是不能保证 order。
使用 collections 的 ChainMap:
from collections import OrderedDict, ChainMap
merge_ordereddict = OrderedDict(ChainMap(dict_1, dict_2))
使用这种方式,可以 merge dict, 但是不能保证 order。
dict 合并方法的 reference: