使用python从csv获取数据并将其写入字典时出现问题

2024-09-28 03:14:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个CSV格式如下:

enter image description here 预期: 我想把它转换成这样的字典:

{'Masterfolder': ['Training'], 'Childfolder': ['Training videos', 'Training documents', 'Training workouts', 'Training practicals']}

到目前为止,我已经完成了以下代码

import csv

with open('features.csv', mode='r') as f:
reader = csv.reader(f)
checker = lambda i: bool(i and i.strip()) 
mydict = {rows[0]: list(filter(checker, rows[0:])) for rows in reader}

print(mydict)

我的输出是这样的:

{'Master folder': ['Child - 1', 'Child - 2', 'Child - 3', 'Child - 4'], 'Training': ['Training videos', 'Training documents', 'Training workouts', 'Training practicals']}

如何改进代码以获得预期的结果?你知道吗


Tags: csv代码child字典格式trainingcheckermydict
2条回答

这就是我所说的分开标题的意思。第一个元素是您的头,因此使用next来获取它是最好的。然后你就可以处理其他行了。你知道吗

with open(r'./data/temp.csv', 'r') as f:
    checker = lambda i: bool(i and i.strip())
    reader = csv.reader(f)
    header = next(reader)
    row = next(reader)
    mydict = {
        header[0]: [row[0]],
        'Childfolder': list(filter(checker, row[1:]))
    }

如果你根本不想存储行,也可以这样

with open(r'./data/temp.csv', 'r') as f:
    checker = lambda i: bool(i and i.strip())
    reader = csv.reader(f)
    header = next(reader)
    mydict = next({
                      header[0]: [row[0]],
                      'Childfolder': list(filter(checker, row[1:]))
                  } for row in reader
                  )

您可以使用Pandas

pd.read_csv读取CSV文件并更改索引

import pandas as pd 

df = pd.read_csv('Classeur1.csv', sep=';', index_col='Master folder')

输出:

                   Child - 1          Child - 2          Child - 3           Child - 4
Master folder               
Training           Training videos    Training document Training workouts   Training praticals

那就做你的口述吧

mydict = {'Master folder' : list(df.index),
          'Childfolder' : list(df.iloc[0])}

输出:

{'Master folder': ['Training'],
 'Childfolder': ['Training videos','Training document','Training workouts','Training praticals']}

相关问题 更多 >

    热门问题