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

如何用glom从嵌套结构中提取二级键'B2'的所有对应值?

解决嵌套字典提取二级键值的glom问题

嘿,我来帮你搞定这个提取嵌套字典值的问题!你想要从这个两层嵌套字典里快速拿出所有二级结构中B2对应的 value,其实用glom有个很直接的写法,先给你看正确的代码:

from glom import glom

target = {'A1': {'B1': 'a1b1', 'B2': 'a1b2'}, 'A2': {'B1': 'a2b1', 'B2': 'a2b2'}}
# 正确的glom写法
result = glom(target, ['*', 'B2'])
print(result)  # 输出: ['a1b2', 'a2b2']

为什么你之前的写法不行?

  • 对于glom(target, T[:, 'B2']):T在glom里是用来转置结构的,不是像numpy那样做索引,这种数组式的写法不适用于字典的嵌套结构,所以会出错。
  • 对于Path(Path(), Path('B2')):Path是用来指定单一嵌套路径的(比如提取A1下的B2用Path('A1', 'B2')),但它不会自动遍历所有顶层键,所以没法批量提取所有子字典里的B2。

额外的备选方案(不用glom)

如果不想依赖第三方库,用Python原生的列表推导式就能轻松搞定,代码更简洁:

result = [sub_dict['B2'] for sub_dict in target.values()]

这个写法直接遍历顶层字典的所有值(也就是每个子字典),然后取出每个子字典里B2对应的value,结果和用glom是完全一样的。

内容的提问来源于stack exchange,提问作者Ruggero Turra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 07:57:42