Python字典路径搜索神器dpath-python:让嵌套JSON像文件系统一样轻松访问
Python字典路径搜索神器dpath-python让嵌套JSON像文件系统一样轻松访问【免费下载链接】dpath-pythonA python library for accessing and searching dictionaries via /slashed/paths ala xpath.项目地址: https://gitcode.com/gh_mirrors/dp/dpath-pythondpath-python 是一个轻量级 Python 字典路径搜索dpath库它把字典当成文件系统让你用/a/b/c这样的路径字符串轻松完成对任意深度嵌套字典或 JSON 数据的读取、搜索、批量修改、新建键与深度合并。无需递归遍历、无需手写循环一条路径搞定多层访问——这就是字典路径搜索的魅力。为什么需要 dpath把字典当文件系统来用处理嵌套字典时你是否写过这样的代码data[a][b][users][0][name] # 长到让人想哭层级一深这种括号链既难读又容易在中间某层缺失时直接报错。dpath 的思路非常直观像操作文件一样操作字典字典的每个键key就是一个目录路径/a/b/43就像文件路径直达目标值还支持*、**等通配符glob像ls一样按模式匹配import dpath x {a: {b: {43: 30, d: [red, buggy, bumpers]}}} dpath.get(x, /a/b/43) # 30一条路径直达深处 dpath.search(x, a/b/[cd]) # 按通配符匹配多个键返回子字典 dpath.values(x, /a/b/d/*) # [red, buggy, bumpers]只取值的列表核心 API 实现都在入口文件dpath/__init__.py中低层路径遍历引擎则位于dpath/segments.py。快速安装 dpath一条命令完成dpath 是零依赖的纯 Python 库支持 Python 3.7MIT 协议安装最简单的方式就是用 pippip install dpath如果你还想阅读源码或本地开发可以从仓库克隆git clone https://gitcode.com/gh_mirrors/dp/dpath-python克隆后的目录里README.rst是官方完整文档setup.py定义了包信息当前版本 2.2.0。dpath 通配符glob语法速查表路径中可以使用类 bash 通配符这是 dpath 最强大的部分 通配符含义示例*匹配同一层级的任意键名/a/*取a下所有键**跨任意层级递归匹配/**搜索整个字典[cd]匹配括号内任一字符的键a/b/[cd]0、1…列表下标像访问数组/a/b/d/1取列表第 2 项比如dpath.search(x, a/b/[cd])会一次性取出键名c和d对应的值这在按键名模式筛选数据的场景下非常省事。dpath 核心 API 一览表读、搜、改、删、合并函数作用一句话说明dpath.get精确读取返回唯一匹配路径的值找不到可指定默认值dpath.search通配搜索返回所有匹配路径组成的子字典dpath.values只取数值返回匹配值的列表不关心路径dpath.set批量修改把匹配 glob 的已有键设为新值dpath.new新建键值类似mkdir -p自动补齐中间层级dpath.delete删除键值按 glob 删除匹配项返回删除数量dpath.merge深度合并像dict.update()但支持深层递归合并每个函数的完整说明可参考源码中的 docstringdpath/__init__.py或官方文档README.rst。实战技巧批量赋值、mkdir 式新建与深度合并1. 批量修改多个键—— 用set 通配符一次改到位dpath.set(x, a/b/[cd], Waffles) # c 和 d 同时被改为 Waffles2. mkdir -p 式新建深层键——new会自动创建所有不存在的中间层级对列表同样生效不足的下标会用None补齐dpath.new(x, a/b/e/f/g, Roffle) # 一行代码创建 e - f - g 三层结构3. 深度合并两个字典——dict.update()只合并第一层而dpath.merge会递归合并。它还提供了MergeType标志如REPLACE、TYPESAFE定义在dpath/types.py控制列表是拼接还是替换dpath.merge(x, y) # 把 y 深度合并进 x列表默认拼接进阶用法过滤器 afilter 与自定义分隔符除了通配符几乎所有函数还支持afilter过滤器传入一个返回True/False的函数对每个末端值做二次筛选。比如搜索整个字典、只保留值中包含ffle的项def afilter(v): return ffle in str(v) dpath.search(x, **, afilterafilter)两个实用小贴士 自定义分隔符路径分隔符默认是/可通过separator参数换成;、.等任何字符。键名里含有分隔符直接把路径写成列表即可完全绕开解析问题dpath.get(x, [a, b/c])。此外dpath/options.py提供全局开关如ALLOW_EMPTY_STRING_KEYSdpath/exceptions.py定义了PathNotFound、InvalidKeyName等异常类型方便你在代码中精准捕获错误。dpath 源码目录结构一览项目结构清晰适合想深入理解实现的读者文件说明dpath/__init__.py全部核心 APIget / search / set / new / delete / mergedpath/segments.py底层路径遍历与匹配引擎dpath/types.pyMergeType等类型定义与路径类型别名dpath/options.py全局配置开关dpath/exceptions.py自定义异常tests/丰富的测试用例如tests/test_search.py、tests/test_merge.pyREADME.rst官方文档与完整示例总结✨核心卖点用文件路径思维操作字典嵌套 JSON 访问从括号地狱变成一行路径零依赖、易上手pip install dpath即可使用API 只有 7 个核心函数通配符 过滤器双武器*、**、[cd]按模式匹配afilter按值筛选全功能覆盖读、搜、改、建、删、深度合并处理配置、日志、JSON 文档都能用如果你在 Python 中频繁和深层嵌套字典打交道dpath-python 值得放进你的工具箱——让数据访问简单、快速、一目了然。【免费下载链接】dpath-pythonA python library for accessing and searching dictionaries via /slashed/paths ala xpath.项目地址: https://gitcode.com/gh_mirrors/dp/dpath-python创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考