问题描述
我正在努力从 CSV 中读取行并将它们分类到多个不同的字典中。
ABW,Latin America & Caribbean,High income,Aruba
CSV 的每一行中有四个示例值。我希望 Aruba 是键,前三个保存为字典值的列表。
with open(filename,mode='r') as csv_file:
line_count = 0
for line in csv.DictReader(csv_file,("country code","region","income","name")):
print(line)
我不确定如何使用 DictReader 来实现这一目标。上面的代码正确地将所有内容分类到这些键中,但我不知道如何指定最终它们键的值以及进入列表的值。
Aruba: ['ABW','Latin America & Caribbean','High income']
这就是我希望它最终看起来的样子。
解决方法
你可以这样做:
- 创建一个空字典
your_data={}
; - 使用 csv.reader 读取该行,它将一行中的数据项列表返回为
row
; - 使用
your_data[row[-1]]=row[0:-1]
在您的字典中创建条目。
所以,像这样(未经测试...):
with open(filename,mode='r') as csv_file:
line_count = 0
your_data={}
reader=csv.reader(csv_file)
for row in reader:
your_data[row[-1]]=row[0:-1]
,
您可以使用 Pandas 轻松完成,例如: (这是 Convert a Pandas DataFrame to a dictionary 的灵感)
import pandas as pd
#header and names args depend of your csv file
df=pd.read_csv(filename,header=0,names=["country code","region","income","name"]
dico=df.set_index('name').T.to_dict('list')
,
这将是实现您所寻找的一种方式
dic = {}
with open('csvfile1.csv',mode='r') as csv_file:
for line in csv_file:
line = line.rstrip().split(',')
dic[line[-1:][0]] = line[:-1]