python - 读取 CSV 数据并将其添加到字典中

标签 python csv dictionary

这是一个空字典

d = {}

这是csv文件数据

M, Max, Sporting, Football, Cricket
M, Jack, Sporting, Cricket, Tennis
M, Kevin, Sporting, Cricket, Basketball
M, Ben, Sporting, Football, Rugby

我尝试使用以下代码将数据从 csv 附加到字典。

with open('example.csv', "r") as csvfile:
        csv_reader = csv.reader(csvfile)
        for row in csv_reader:
            if row:
                d.setdefault(row[0], {})[row[1]] = {row[2]: [row[3]]}

但它给了我一个错误:

d.setdefault(row[0], {})[row[1]] = {row[2]: [row[3]]}
IndexError: list index out of range

无论如何,我可以将 csv 中的数据添加到字典中,格式为:

d = {'M': {'Max': {'Sporting': ['Football', 'Cricket']}, 'Jack': {'Sporting': ['Cricket', 'Tennis']}}}

我是新手,请帮助我。

最佳答案

import csv

d={}
with open('JJ.csv', "r") as csvfile:
    csv_reader = csv.reader(csvfile)
    for row in csv_reader:
        if row:
            d.setdefault(row[0],{})[row[1]] = {row[2]: [row[3],row[4]]}
print(d)

{'M': {' Max': {' Sporting': [' Football', ' Cricket']}, ' Jack': {' Sporting': [' Cricket', ' Tennis']}, ' Kevin': {' Sporting': [' Cricket', ' Basketball']}, ' Ben': {' Sporting': [' Football', ' Rugby']}}}

要删除输出中的所有前导/尾随空格,您可以改用下面的行。可能有更好的方法,我现在还不确定。

d.setdefault(row[0],{})[row[1].strip()] = {row[2].strip(): [row[3].strip(),row[4].strip()]}

关于python - 读取 CSV 数据并将其添加到字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47302514/

相关文章:

python - 删除 json 输出中具有空值的列

python - 如何导入具有排序文件名的 csv 文件?

php - Laravel 验证器和 excel 文件错误

json - Realm + Swift,嵌套 JSON

python - 了解python中的导入模块

python - 如何在virtualenv中安装哪些程序需要 "sudo"?

python - 如何对字典进行排序?

python - 在 Python 中使用 pprint.pprint 后,我​​可以避免排序字典输出吗?

python 变量引用意外改变行为

pandas - 如何向 csv 文件添加分隔符