跳转到主要内容

一个轻量级的库,用于执行Python字典的深度合并

项目描述

DeepMerge

build status release status MIT license coverage status

pypi version pypi python versions supported pypi downloads

一个轻量级的Python包,用于执行Python字典的深度合并

安装

使用pip安装此包!

$ pip install pydeepmerge

要从源安装此包,请克隆仓库并运行

$ pip install .

如果您想进行开发,请记住安装附加组件。

# for bash
$ pip install -e .[test,dev]
# for zsh
$ pip install -e .\[test,dev\]

用法

用法很简单

from pydeepmerge import deep_merge

> some_data = {'foo': {'bar': 'baz', 'spam': 'eggs'}, 'ham': 'eggs'}
> more_data = {'spam': {'eggs': 'ham'}, 'foo': {'baz': 'bar', 'bar': 'foo'}}
> deep_merge(some_data, more_data)
{'foo': {'bar': 'foo', 'baz': 'bar', 'spam': 'eggs'}, 'spam': {'eggs': 'ham'}, 'ham': 'eggs'}

pydeepmerge 还允许用户指定自己的合并策略函数。默认情况下,它使用 prefer_right 函数。

合并策略是任何可以接受两个输入的函数。合并策略函数的输出应该是两个值之间的合并结果。

在编写自己的合并策略函数时,请记住,如果键在左侧映射中不存在,则将值 Key.NoKeyFound 传递给函数的第一个参数。这样做是为了让用户确定是否想在字典序列中键首次出现时执行特殊行为。

以下是一个合并策略函数的示例

from pydeepmerge import deep_merge
from pydeepmerge.types import Key
from typing import Mapping

def pick_shallower(left_value, right_value):
    if left_value is Key.NoKeyFound:
        return right_value

    if isinstance(right_value, Mapping):
        if not isinstance(left_value, Mapping):
            return left_value
        return deep_merge(left_value, right_value)

    return right_value

deep_merge 函数不会修改任何映射,而是创建一个新的字典。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码发行版

pydeepmerge-0.3.3.tar.gz (6.5 kB 查看哈希值)

上传时间 源代码

构建发行版

pydeepmerge-0.3.3-py3-none-any.whl (10.3 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面