Python 使用CSV文件中的列表创建嵌套字典

Python 使用CSV文件中的列表创建嵌套字典,python,string,list,csv,dictionary,Python,String,List,Csv,Dictionary,我有一个CSV文件(“import.CSV”),其中包含以下数据,其中每个值都是一个字符串 KID, C1, C2, C3 ID1, X1, "X2, X2.5", X3 ID2, "Y1, Y1.5", Y2, Y3 我想使用如下数据创建一个嵌套字典 'KID' { 'ID1' { 'C1': 'X1', 'C2': ['X2', 'X2.5'], 'C3': 'X3', }, 'ID2' { 'C1':

我有一个CSV文件(“import.CSV”),其中包含以下数据,其中每个值都是一个字符串

KID, C1, C2, C3
ID1, X1, "X2, X2.5", X3
ID2, "Y1, Y1.5", Y2, Y3
我想使用如下数据创建一个嵌套字典

'KID' {
    'ID1' {
        'C1': 'X1',
        'C2': ['X2', 'X2.5'],
        'C3': 'X3',
    },
    'ID2' {
        'C1': ['Y1', 'Y1.5'],
        'C2': 'Y2',
        'C3': 'Y3',
    },
我有以下代码

import csv
dict = {}

with open("import.csv", mode='r') as data_file:
data = csv.DictReader(data_file)
for row in data:
    item = artists.get(row["artist"], dict())

    item["C1"] = str(row["C1"])
    item["C2"] = str(row["C2"])
    item["C3"] = str(row["C3"])


    dict[row["KID"]] = item
取而代之的是,我得到了一本

'KID' {
    'ID1' {
        'C1': 'X1',
        'C2': 'X2, X2.5',
        'C3': 'X3',
    },
    'ID2' {
        'C1': 'Y1, Y1.5',
        'C2': 'Y2',
        'C3': 'Y3',
    },

我通过按值查找字典中的键来遍历字典,所以字符串/列表问题把我搞砸了。是否有办法更改字典创建或更改CSV设置方式?

如果存在多个值,则使用包装函数查找返回列表,否则返回字符串

def get_str_or_list(value):
    return value.split(",") if "," in value else value


item["C1"] = get_str_or_list(str(row["C1"]))
item["C2"] = get_str_or_list(str(row["C2"]))
item["C3"] = get_str_or_list(str(row["C3"]))

只需查找
,然后执行
str.split(“,”
”)?似乎您正在对可能是列表的内容进行字符串化。但是如果没有看到
arists.get
,就无法判断。此外,调用变量
dict
会覆盖内置函数<代码>行[“艺术家”]也失败。请提供一个。请提供一个。