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

如何从Python字典中仅提取嵌套内层键值对?

提取Python字典中的所有内层键值对

给定以下Python字典,需要仅提取其中的内层键值对(不包含destination、orderData这类外层键):

{
  "destination": {
    "name": "accountName"
  },
  "orderData": {
    "sourceOrderId": "1234512345",
    "items": [
      {
        "sku": "Business Cards",
        "sourceItemId": "1234512346",
        "components": [
          {
            "code": "Content",            
            "fetch": true,
            "path": "http://www.w2psite.com/businessCard.pdf"
          }
        ]
      }
    ],
    "shipments": [
      {
        "shipTo": {
          "name": "John Doe",
          "companyName": "Acme"
        },
        "carrier":{
          "code": "fedex",
          "service": "ground"
        }
      }
    ]
  }
}

期望输出示例(需覆盖所有内层键值对,且输出不含引号):

name: accountName
sourceOrderId: 1234512345
sku: Business Cards
sourceItemId: 1234512346
code: Content
fetch: True
path: http://www.w2psite.com/businessCard.pdf
name: John Doe
companyName: Acme
code: fedex
service: ground

注意事项

  • 输出中不能包含"符号
  • 数据可能存在多层嵌套的字典和列表,需处理所有层级的内层键值对

我尝试了以下代码,但无法得到预期结果:

for key, value in json_f.items():
    print(key, value)

解决方案

可以通过递归遍历的方式处理嵌套的字典和列表,当遇到值为非字典、非列表的元素时,直接输出键值对:

def extract_inner_pairs(data):
    # 处理列表:遍历每个元素递归处理
    if isinstance(data, list):
        for item in data:
            extract_inner_pairs(item)
    # 处理字典:遍历键值对,值是字典/列表则递归,否则输出
    elif isinstance(data, dict):
        for key, value in data.items():
            if isinstance(value, (dict, list)):
                extract_inner_pairs(value)
            else:
                # 布尔值自动转为大写格式,输出不带引号
                print(f"{key}: {value}")

# 假设你的字典存储在json_f变量中
json_f = {
  "destination": {
    "name": "accountName"
  },
  "orderData": {
    "sourceOrderId": "1234512345",
    "items": [
      {
        "sku": "Business Cards",
        "sourceItemId": "1234512346",
        "components": [
          {
            "code": "Content",            
            "fetch": True,
            "path": "http://www.w2psite.com/businessCard.pdf"
          }
        ]
      }
    ],
    "shipments": [
      {
        "shipTo": {
          "name": "John Doe",
          "companyName": "Acme"
        },
        "carrier":{
          "code": "fedex",
          "service": "ground"
        }
      }
    ]
  }
}

extract_inner_pairs(json_f)

代码说明

  1. 递归函数extract_inner_pairs会先判断输入数据的类型:
    • 如果是列表,遍历每个元素继续递归处理
    • 如果是字典,遍历每个键值对:若值是字典或列表则继续递归,否则直接输出键: 值的格式
  2. 布尔值会自动转为Python默认的大写格式(如True),字符串输出时不会带引号,完全符合要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:24:18