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

如何将Python嵌套字典列表转换为指定字段的CSV文件

实现方案

问题根源有两个:

  • 原始数据是双层嵌套列表,最外层额外套了一层列表,直接传入pandas会导致结构解析不符合预期
  • 没有显式指定导出字段,pandas默认会读取字典所有键作为列导出,空字典、空列表这类非目标字段也会被带出

完整代码

import pandas as pd

# 原始输入数据
raw_data = [[{'id': 1, 'networkId': 'L_1111', 'name': 'VLAN1', 'applianceIp': '1.1.1.1', 'subnet': '1.1.1.0/24', 'fixedIpAssignments': {}, 'reservedIpRanges': [], 'dnsNameservers': 'upstream_dns', 'dhcpHandling': 'Run a DHCP server', 'dhcpLeaseTime': '1 day', 'dhcpBootOptionsEnabled': False, 'dhcpOptions': [], 'interfaceId': '1', 'networkName': 'NETWORK1'}, {'id': 2, 'networkId': 'L_2222', 'name': 'VLAN2', 'applianceIp': '2.2.2.2', 'subnet': '2.2.2.0/24', 'fixedIpAssignments': {}, 'reservedIpRanges': [], 'dnsNameservers': 'upstream_dns', 'dhcpHandling': 'Do not respond to DHCP requests', 'interfaceId': '2', 'networkName': 'NETWORK2'}]]

# 提取内层实际存储VLAN条目的列表
vlan_records = raw_data[0]

# 构造DataFrame时显式指定需要保留的核心字段
target_columns = ['id', 'networkId', 'name', 'applianceIp', 'subnet']
df = pd.DataFrame(vlan_records, columns=target_columns)

# 导出CSV,关闭默认行号索引
df.to_csv('vlan_output.csv', index=False)

导出效果

最终生成的CSV文件内容如下,完全匹配需求:

id,networkId,name,applianceIp,subnet
1,L_1111,VLAN1,1.1.1.1,1.1.1.0/24
2,L_2222,VLAN2,2.2.2.2,2.2.2.0/24

你给出的空格分隔对齐效果是纯文本排版展示样式,标准CSV默认用逗号做分隔符,用任意表格工具打开都会自动按列对齐成你要的排版。如果确实需要纯空格分隔的文本文件,在to_csv中增加参数sep=' '即可。


补充说明

  • 不需要提前手动清理空字典、空列表类的冗余字段:只要显式传入columns参数指定目标列,pandas会自动忽略所有非指定字段,不受字段值类型影响。
  • 如果原始数据包含多个同结构的内层子列表(比如多组VLAN分不同子列表存储),可以先平铺合并所有记录再处理:vlan_records = [entry for sub_list in raw_data for entry in sub_list],后续逻辑不变。

内容的提问来源于stack exchange,提问作者Walter Joel Solano

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:57:22