Python 如何打开每行中有多个值的CSV并将其存储在嵌套字典中?

Python 如何打开每行中有多个值的CSV并将其存储在嵌套字典中?,python,csv,dictionary,Python,Csv,Dictionary,我是python新手,尝试执行以下操作: 打开一个CSV文件,其中有5个不同的值,用逗号分隔 我想将数据存储在字典中,其中的键将是行[0] 假设有4行,因此有4个主键,对于每个键,我需要创建另一个包含4个新键的嵌套字典,每个键的值为第1、2、3和4行 假设CSV包含: 1,hi,1,2,3 2,yes,2,3,4 3,no,3,4,5 4,why,4,5,6 我需要存储: dict={'1':{'key2':嗨,'key3':1,'key4':2,'key5':3},'2':{},'3':{}

我是python新手,尝试执行以下操作:

打开一个CSV文件,其中有5个不同的值,用逗号分隔

我想将数据存储在字典中,其中的键将是
行[0]

假设有4行,因此有4个主键,对于每个键,我需要创建另一个包含4个新键的嵌套字典,每个键的值为第1、2、3和4行

假设CSV包含:

1,hi,1,2,3
2,yes,2,3,4
3,no,3,4,5
4,why,4,5,6
我需要存储:

dict={'1':{'key2':嗨,'key3':1,'key4':2,'key5':3},'2':{},'3':{},'4':{}

这是我正在使用的代码

import csv
dict={}
    reader = csv.reader(open('filename.csv', 'r'))
    for row in reader:
        key=row[0]
        for key in dict:
           dict[key]={}
           dict[key][key2]=row[1]
           dict[key][key3]=row[2]
           dict[key][key4]=row[3]
           dict[key][key5]=row[4]

我遗漏了什么?

您的代码无法工作的原因是,对于每一行
而言,对于dict中的key,您都在对空字典
的key进行迭代,导致没有采取任何操作

相反,如果要将
{'key2':行[1],'key3':行[2],'key4':行[3],'key5':行[4]}
插入到
dict[row[0]
中,请尝试以下操作。此外,避免使用以内置类型命名的变量,即
列表
设置
全部
dict

import csv
output_dict = {}
with open('filename.csv', 'r') as f:    
    reader = csv.reader(f)
    for row in reader:
      output_dict[row[0]] = {'key%d' % (i + 1): row[i] for i in xrange(1, 5)}

下面是满足您要求的代码:

import csv
my_dictionary = {}
reader = csv.reader(open('filename.csv', 'r'))
for row in reader:
    my_dictionary[row[0]] = {}
    for index in range(1, len(row)):
        my_dictionary[row[0]]['key' + str(index)] = row[index]

应该避免将字典命名为“dict”,因为这是创建字典对象的函数的名称。此外,迭代器变量会覆盖变量“key”。

为什么示例中的键“2”、“3”和“4”的值为空?