拓冰建站拓冰建站
首页 / 资讯中心 / 正文

dpath-python写入与删除全攻略:set、new、delete的正确打开方式

dpath-python写入与删除全攻略set、new、delete的正确打开方式【免费下载链接】dpath-pythonA python library for accessing and searching dictionaries via /slashed/paths ala xpath.项目地址: https://gitcode.com/gh_mirrors/dp/dpath-pythondpath-python 是一个让 Python 字典dict像文件系统一样好用的开源库用/a/b/c这样的斜杠路径就能读取、写入、搜索、删除任意深度的嵌套键值。本文带你一次搞懂它的三大写删函数——set改、new增、delete删并附上新手最容易踩的坑帮你彻底告别data[a][b][c]式的手动逐层赋值。为什么需要 dpath-python日常操作多层嵌套字典往往要写出一长串data[a][b][c] 1还得层层防KeyError。dpath-python 把字典变成一棵虚拟文件系统用glob 通配符*、**、[ab]批量定位任意深度的键用afilter 过滤器按值的条件筛选目标三大核心动作dpath.set修改、dpath.new新增、dpath.delete删除一行 dpath 代码顶上一段繁琐循环。✅快速上手pip 一行安装 最小示例pip install dpathimport dpath data {a: {b: {c: 1, d: 2}}} dpath.set(data, /a/b/c, 99) # 改c 的值变成 99 dpath.new(data, /a/b/e/f, hi) # 增自动创建 e、f 两层再赋值 dpath.delete(data, /a/b/d) # 删d 键被移除 默认分隔符是/三个函数都支持separator参数可换成;、.等任意字符。一张表看懂三兄弟set vs new vs delete函数作用路径不存在时返回值dpath.set修改已存在的键静默跳过修改的键数量dpath.new自动创建缺失路径并赋值像mkdir -p补齐中间层原对象dpath.delete删除所有匹配的键抛出PathNotFound删除的键数量一句话记忆set 只改不建new 自动建路delete 删不中就报错。dpath.set 基础用法批量修改已存在的值set的第一个参数是对象第二个是glob 路径第三个是值x {a: {b: {c: [], d: [red, buggy]}}} n dpath.set(x, a/b/[cd], Waffles) # 返回 2c 和 d 两个键同时被改成 Waffles它支持所有 bash 风格通配符一次批量改写多个键非常方便。进阶技巧用 afilter 只改符合条件的值传入一个返回True/False的函数就能按值过滤只命中满足条件的键def afilter(v): return int(v) 31 dpath.set(dict_, /a/*, 31337, afilterafilter) # 只有值等于 31 的键 d 被修改b、c 原样保留⚠️ 常见误区set不会创建新路径。路径不存在时它不报错、只是返回 0很多人以为没生效其实是键根本不存在——这时应该换new。dpath.new 进阶技巧像 mkdir -p 一样自动建路径new是写入场景的绝对主力路径不存在时它会自动补齐所有中间层再赋值。dpath.new(x, a/b/e/f/g, Roffle) # a/b/e、a/b/e/f 两层被自动创建g 赋值为 Roffle它还有一个贴心细节根据下一段的类型自动推断建 dict 还是 list。比如dpath.new(d, a/b/0/c/0, hello)中0是数字段dpath 会推断a/b应为列表并创建[{c: [hello]}]这样正确的结构。列表自动扩容None 填充到目标下标对列表按大下标写入时dpath 会用None把列表撑长dpath.new(x, a/b/e/f/h, []) dpath.new(x, a/b/e/f/h/13, I am lonely in here) # h 列表被扩到 14 个元素0~12 均为 None小心new 的路径不做 glob 解析set和delete把路径当 glob 用但new不走通配——路径里写*或[b]它们会成为字面键名的一部分。需要创建带通配符字符的键时这反而是种精确控制。dpath.delete 删除操作glob 批量清理deleted dpath.delete(x, a/b/[cd]) # 返回 2c 和 d 两个键被一并删除删除不存在的键会抛异常与set的静默不同delete找不到任何匹配路径时会抛出PathNotFound定义于 dpath/exceptions.py帮你及时发现拼错的路径。列表删除的隐藏规则None 占位符删除列表元素时dpath 为了不破坏剩余元素的顺序尾部元素真正移除非尾部元素置为None。所以dpath.delete(x, a/b/e/f/h/13)后列表长度缩 1而删除中间某个下标后该位置会变成None占位。新手避坑指南4 个高频问题1️⃣ set 没生效也不报错路径不存在时set返回 0 且不抛异常创建新键请改用dpath.new。2️⃣ 键名里本身含有分隔符字符串路径会被切分撞车时改用列表路径即可所有函数都支持d {a: {b/c: 0}} dpath.get(d, [a, b/c]) # 0/ 不再参与切分3️⃣ 空字符串键报错InvalidKeyName默认禁止空字符串键需要时全局开启见 dpath/options.pyimport dpath.options dpath.options.ALLOW_EMPTY_STRING_KEYS True4️⃣ 只想删值满足条件的键delete同样支持afilter和set的用法一致可按值条件精准清理。核心源码位置速查想深入原理看这几处就够了顶层 APIset/new/delete/get/search/mergedpath/init.py底层路径引擎glob 匹配、路径自动创建、列表扩容dpath/segments.py异常定义PathNotFound、InvalidKeyName等dpath/exceptions.py行为测试用例照着看最直观tests/test_set.py、tests/test_new.py、tests/test_delete.py完整官方说明README.rst掌握set、new、delete三件套再加上 glob 通配符和afilter你的 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),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门