Merge 两个 OrderedDict 到一个 OrderedDict 中的可用和不可用方法
为了实现 merge 前后都保持顺序,测试了不少方法,足足花了一个小时左右(从网上获取信息成字典,耗时较长)。所以有必要写出来分享一下。
可用方法
from collections import OrderedDict
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:
Reference
- Python合并两个字典成一个新字典的几种方法分析比较
|