一个深度合并函数。
mergedeep的Python项目详细描述
mergedeep
一个深度合并函数。
安装
$ pip install mergedeep
用法
merge(target: Map[KT, VT], *sources: Map[KT, VT], strategy: Strategy = Strategy.REPLACE) -> Map[KT, VT]
不改变源指令的深度合并
frommergedeepimportmergea={"keyA":1}b={"keyB":{"sub1":10}}c={"keyB":{"sub2":20}}merged=merge({},a,b,c)print(merged)# {"keyA": 1, "keyB": {"sub1": 10, "sub2": 20}}
深入合并现有的D.T.P/P>
frommergedeepimportmergea={"keyA":1}b={"keyB":{"sub1":10}}c={"keyB":{"sub2":20}}merge(a,b,c)print(a)# {"keyA": 1, "keyB": {"sub1": 10, "sub2": 20}}
合并策略:
- 替换(default)
# Strategy.REPLACE# When `target` and `source` values are the same, replace the `target` value with one from `source` (default).# Note: with multiple sources, the `last` source value with be what appears in the merged result. frommergedeepimportmerge,Strategytarget={"key":[1,2]}source={"key":[3,4]}merge(target,source,strategy=Strategy.REPLACE)# same as: merge(target, source)print(target)# {"key": [3, 4]}
- 添加剂
# Strategy.ADDITIVE# When `target` and `source` values are both either `list`, `tuple`, or `set`, extend/update `target` with values from `source` collection.frommergedeepimportmerge,Strategytarget={"key":[1,2]}source={"key":[3,4]}merge(target,source,strategy=Strategy.ADDITIVE)print(target)# {"key": [1, 2, 3, 4]}
- 类型安全
# Strategy.TYPESAFE# When `target` and `source` values are of different types, raise `TypeError`.frommergedeepimportmerge,Strategytarget={"key":[1,2]}source={"key":{3,4}}merge(target,source,strategy=Strategy.TYPESAFE)# TypeError: target type: <class 'list'> differs from source type: <class 'set'> for key: "key"
许可证
麻省理工学院