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

在Python中如何获取多级JSON中指定key对应上级节点的name值

如何从嵌套JSON中找到指定subcategory对应的上级节点name?

嘿,我来帮你搞定这个问题!其实你的需求没你想的那么复杂——不需要什么“向上遍历层级”,因为每个ancestors数组里的元素本身就是你要找的“上级节点”,它的subcategory只是用来标记这个节点的类型(城市/省份/国家)而已。我们只需要遍历数组,找到类型匹配的节点,直接取它的name就行。

举个JavaScript的实现例子:

// 你的原始JSON数据
const locationData = { 
  "ancestors": [ 
    { "subcategory": [ { "key": "city", "name": "City" } ], "name": "Da Lat" }, 
    { "subcategory": [ { "key": "province", "name": "Province" } ], "name": "Lam Dong Province" }, 
    { "subcategory": [ { "key": "country", "name": "Country" } ], "name": "Vietnam" } 
  ] 
};

// 找到subcategory中key为"province"的节点
const provinceNode = locationData.ancestors.find(node => {
  // 检查当前节点的subcategory里是否有key匹配的项
  return node.subcategory.some(subItem => subItem.key === "province");
});

// 获取目标值
if (provinceNode) {
  console.log(provinceNode.name); // 输出:Lam Dong Province
} else {
  console.log("未找到匹配的province节点");
}

如果用Python实现的话:

# 你的原始JSON数据
location_data = { 
  "ancestors": [ 
    { "subcategory": [ { "key": "city", "name": "City" } ], "name": "Da Lat" }, 
    { "subcategory": [ { "key": "province", "name": "Province" } ], "name": "Lam Dong Province" }, 
    { "subcategory": [ { "key": "country", "name": "Country" } ], "name": "Vietnam" } 
  ] 
}

target_name = None
# 遍历每个祖先节点
for node in location_data["ancestors"]:
    # 检查当前节点的subcategory列表
    for sub_item in node["subcategory"]:
        if sub_item["key"] == "province":
            target_name = node["name"]
            break
    if target_name:
        break

print(target_name) # 输出:Lam Dong Province

简单解释下逻辑:

  1. 遍历ancestors数组里的每一个节点
  2. 对每个节点,检查它的subcategory子数组中是否存在key等于province的项
  3. 一旦找到匹配的节点,直接提取它的name字段,这就是你要的目标值

内容的提问来源于stack exchange,提问作者Nishant Sah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:09:19