问题标签 [dpath]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
391 浏览

python - Python dpath.util.get 空字符串键错误

我读了一个简单的 JSON 文本文件,它解析为一个 dict 就好了。

我想获取特定元素,我通常使用 dpath 包。但是,在这种情况下,我收到一个错误,这似乎暗示我

我没有看到任何空字符串键,只有上面的两个。我可以使用其他一些看似随机的 JSON 文本文件进行重现,但对其他人来说效果很好。知道这里发生了什么吗?

0 投票
0 回答
126 浏览

python - dpath.utils:TypeError:类型类的对象没有 len()

我有一条路。使用 dpath-utils,我通过根据路径长度创建子键来创建字典。但在当前示例中,我的路径长度很短,如下所示。

注意 如果路径很长:“/cbghb6b2861f919f6ffc238a0c5cffed63436/bbc238a0c5cffed6343fc238a0c5cffed63436”。我解释了这一点,因为这就是我使用 dpath.utils 的原因

我使用 dpath.utils 将路径添加到字典的相应键,如下所示。

但是使用路径调用时出现此错误。

输出:

但是当我直接打电话时,没有问题,但我不想直接打电话。因为我可能想在其子键之一中获取值。以及这有多低。

输出:

0 投票
1 回答
86 浏览

python - 使用 dpath.util 或其他任何东西从 json 返回键路径的标记值

我有这个 json :

我正在尝试使用 dpath.util.get 获取 json 中每次出现“名称”的所有值,以获得关键路径

运行后出现此错误:

预期结果:

我正在尝试这样做,因为 json 可以更改,并且该路径始终与特定的 json 相关。我对其他解决方案也没有问题。

0 投票
1 回答
29 浏览

python - 如何使用 dpath 库添加新的字典值?

我有一种 python 字典键值行和列,如下所示。我想要做的是我想在行索引 0 和列索引 0 处添加一个新字段“another_new_field”。

我使用dpath 库来执行此操作,在这里我尝试做的是

如结果所示,它不会附加新字段,而是用新字段替换现有值。但我希望它是这样的:

我怎样才能做到这一点?谢谢。

0 投票
1 回答
65 浏览

python - 使用 dpath 时如何避免 KeyError?

我用dpath一种更简洁的方式访问嵌套字典。

dpath可以这样做:

代替:

但是,使用的唯一问题是当路径中的任何键都不存在时dpath,我会得到一个。KeyError而使用get允许我指定默认值,以防找不到密钥。

我可以尝试捕获KeyError异常,但这会使代码变得更长和更复杂,失去dpath最初给我的整洁。

我的问题是,如何在 中指定默认值dpath

这是他们的文档,但我没有找到任何相关内容:https ://pypi.org/project/dpath/

0 投票
0 回答
28 浏览

python - Python 包“dpath”segments.py 在简单的“isinstance”调用中提供无限递归

尝试使用 swagger codegen 为我正在为工作做的项目自动生成一些客户端库。显然,swagger 本身没有 python 版本,但它们链接到社区支持的 swagger-py 代码生成。用 pip 安装它,尝试在我的项目 OpenAPI repo 上运行,我收到错误“RecursionError:instancecheck中超出最大递归深度”

这是堆栈跟踪:

如果只是这个 swagger codegen 的社区 python 实现,我会理解,但它发生在 isInstance 中。

看起来好像它到达了 dpath 站点包(不熟悉这个,也许 swagger_py_codegen 添加了它),它到达了段,然后有一个函数可以检查某物是否是叶子。

这是segments.py的相关部分:

我很确定 isinstance 只是标准库的一部分,所以我不能调整它。但是从 dpath 中查看这个 leaf(thing) 方法,我看不出是什么导致了错误。

到目前为止我已经尝试过:

我尝试编辑segments.py 将最大递归数增加到10,000。这只会导致永远运行。我把它单独放置了 5 分钟,但它仍然没有完成。

所以它的某种无限递归循环,但假设 isinstance 是正确的,我无法从那个简单的叶子(事物)调用中找出导致问题的原因

0 投票
1 回答
22 浏览

python-3.x - 使用 python dpath 库删除嵌套对象

我想使用 python 的 dpath 执行删除操作,并使用 separator 参数删除嵌套对象。但我无法删除嵌套对象。下面是我的代码

删除操作后,字典是{'a': {'b': {}}},而所需的字典是{'a':{}}

更新:我希望能够在对象下一个接一个地删除一个键b,最后删除空b本身。预期结果应该是{'a':{}}