如何解决如何使一行中的最后一项成为字典的键,并将前面的项目保存为列表
我正在努力从 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]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。