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

Python:将嵌套字典列表转为DataFrame,求更优实现方法

嵌套字典列表转DataFrame的优化实现

需求说明

将嵌套字典列表转换为以键为列名、对应Value值为行数据的DataFrame。

示例数据

l = [
  {
   "Items": {
      "a": {
       "Value": 10          
      },
      "b": {
       "Value": 20          
      },
      "c": {
       "Value": 30          
      }
   }
 },
 {
   "Items": {
      "a": {
       "Value": 100          
      },
      "b": {
       "Value": 200          
      },
      "c": {
       "Value": 300          
      }
   }
 },
 {
   "Items": {
      "a": {
       "Value": 1000          
      },
      "b": {
       "Value": 2000          
      },
      "c": {
       "Value": 3000          
      }
   }
 }
]

期望结果

| a    | b    | c    |
|------|------|------|
| 10   | 20   | 30   |
| 100  | 200  | 300  |
| 1000 | 2000 | 3000 |

原代码问题

你提供的代码存在变量k未定义的问题,会直接抛出运行异常;同时手动循环构建结果字典的写法繁琐,可读性和效率都有待提升。

优化实现方式

方式一:列表推导式扁平化字典后转DataFrame

先将每个嵌套结构转换为扁平的键值对字典,再直接传入pd.DataFrame(),写法直观简洁:

import pandas as pd

# 扁平化每个条目:提取Items中的键和对应Value值
flat_records = [{key: item["Value"] for key, item in entry["Items"].items()} for entry in l]
df = pd.DataFrame(flat_records)

方式二:使用pd.json_normalize解析嵌套结构

利用pandas内置的json_normalize工具专门处理嵌套字典结构,代码更简洁高效:

import pandas as pd

# 解析嵌套结构,并重命名列去掉".Value"后缀
df = pd.json_normalize(l, record_path=["Items"]).rename(columns=lambda col: col.split(".")[0])

两种方式都能快速生成目标格式的DataFrame,避免了手动循环的冗余代码,可读性和执行效率更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 21:20:28