Python 如何打开每行中有多个值的CSV并将其存储在嵌套字典中?
我是python新手,尝试执行以下操作: 打开一个CSV文件,其中有5个不同的值,用逗号分隔 我想将数据存储在字典中,其中的键将是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':{}
行[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”的值为空?