You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用dpath库时,如何将01、02等字符串设为字典键而非列表索引?

问题描述

我们希望创建/维护如下结构的字典:

{
  "a": {"bb": {"01": "some value 01", 
               "02": "some value 02", 
       } },
}    

使用dpath库的.new()方法实现时,遇到了路径解析问题:

import dpath

d = dict()                          ; print(d)  # 输出: {}
dpath.new(d, 'a/bb/00/c', '00val') ; print(d)  # 输出: {'a': {'bb': [{'c': '00val'}]}}
# 问题:这里"bb"被自动转为列表,"00"被识别为列表索引0
# 期望结果:{'a': {'bb': {'00': {'c': '00val'} }}}
# 而非当前生成的列表结构

当路径中包含"00"这类纯数字字符串时,dpath会默认将其解析为列表索引,而非字典键。目前只能通过给键添加前缀(如s00、s01)规避,但需要更合理的解决方法。

解决方案

调用dpath.new()时传入listify=False参数,即可强制所有路径段都作为字典键处理,不会自动将纯数字路径段解析为列表索引:

import dpath

d = dict()
dpath.new(d, 'a/bb/00/c', '00val', listify=False)
print(d)  # 输出: {'a': {'bb': {'00': {'c': '00val'}}}}

这个参数会全局禁用路径段的列表化解析,所有纯数字的路径段都会被当作普通字典键处理,完全符合需求。

内容的提问来源于stack exchange,提问作者Nam G VU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 00:22:36