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

如何将含多维列表等多类型数据的CSV读取为Python字典/字典列表?

解决CSV导入为带正确类型的字典列表问题

问题背景

你需要导入的CSV格式如下:

name,value,isTrue,multiDimArray
Paul, 10, True,[[0,0],[10.5,100],[135.5,87.5]]
Amy, 3, True,[[0,0]]
Jack, 9, False,[[100,100],[100.5,22.5],[15.5,87]]

目标是将其转为包含字符串、整数、布尔值、numpy数组/列表类型的字典列表,但csv.DictReader会把所有内容解析为字符串,np.genfromtxt无法处理嵌套数组结构导致报错或类型异常。

解决方案

方法1:使用csv.DictReader配合手动类型转换

利用ast.literal_eval解析嵌套数组字符串,同时对其他字段做类型转换:

import csv
import ast
import numpy as np

def convert_row(row):
    converted = {}
    # 处理字符串类型的name字段
    converted['name'] = row['name'].strip()
    # 转换value为整数
    converted['value'] = int(row['value'].strip())
    # 转换isTrue为布尔值
    converted['isTrue'] = row['isTrue'].strip().lower() == 'true'
    # 解析多维数组为列表,可选转为numpy数组
    arr_list = ast.literal_eval(row['multiDimArray'].strip())
    converted['multiDimArray'] = np.array(arr_list)  # 若不需要numpy,直接用arr_list即可
    return converted

inputFile = 'your_file.csv'
with open(inputFile, 'r') as file:
    csv_reader = csv.DictReader(file)
    data = [convert_row(row) for row in csv_reader]

# 验证类型(可选)
for item in data:
    print(f"name: {type(item['name'])} | value: {type(item['value'])} | isTrue: {type(item['isTrue'])} | multiDimArray: {type(item['multiDimArray'])}")

方法2:使用Pandas快速处理

Pandas的read_csv支持自定义转换器,能更简洁地完成类型转换:

import pandas as pd
import ast
import numpy as np

# 定义各字段的转换规则
converters = {
    'value': int,
    'isTrue': lambda x: x.strip().lower() == 'true',
    'multiDimArray': lambda x: np.array(ast.literal_eval(x.strip()))
}

# 读取CSV并应用转换器
df = pd.read_csv('your_file.csv', converters=converters)
# 转为字典列表
data = df.to_dict('records')

# 验证类型(可选)
for item in data:
    print(f"name: {type(item['name'])} | value: {type(item['value'])} | isTrue: {type(item['isTrue'])} | multiDimArray: {type(item['multiDimArray'])}")

说明

  • CSV本身是纯文本格式,没有内置类型信息,因此必须手动指定转换规则;
  • ast.literal_eval比eval更安全,能合法解析Python语法格式的字符串(比如你的多维数组);
  • 当前CSV格式无需调整,只要保证multiDimArray字段符合Python列表语法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:58:28