python - 如何将 CSV 文件中的行存储在字典中?
问题描述
我必须用 Python 从 CSV 文件中提取索引 1 和 5 处的所有行,并将它们存储在字典“名称”中。但是,由于我是 Python 新手,我真的很努力完成这个任务。这是我的代码:
names = {}
with open("../data/names.csv") as file:
for line in file:
print(line)
输出:
Id,Name,Year,Gender,State,Count
1,Mary,1910,F,AK,14
2,Annie,1910,F,AK,12
3,Anna,1910,F,AK,10
4,Margaret,1910,F,AK,8
5,Helen,1910,F,AK,7
6,Elsie,1910,F,AK,6
...
如果我尝试将索引 1(字符串“Name”)和索引 5(int)存储在字典“names”中,则会得到错误的输出。这里的代码:
names = {}
with open("../data/names.csv") as file:
for line in file:
names = {"name": line[1], "count": line[5]}
print(names)
(错误的)输出:
{'name': '6', 'count': '2'}
解决方案
未指定所需的输出数据结构,我认为问题是关于列(而不是行)
with open('sample.csv','r') as file_handle:
file_content = file_handle.read()
list_of_dicts = []
for index, line in enumerate(file_content.split('\n')):
line_as_list = line.split(',')
if index==0:
pass # ignore the headers
else:
line_dict = {'name': line_as_list[1], 'count': line_as_list[5]}
list_of_dicts.append(line_dict)
print(list_of_dicts)
如果所需的数据结构是单个字典,其中包含每行的条目列表,
results = {'name': [], 'count': []}
for index, line in enumerate(file_content.split('\n')):
line_as_list = line.split(',')
if index==0:
pass # ignore the headers
else:
results['name'].append(line_as_list[1])
results['count'].append(line_as_list[5])
print(results)
推荐阅读
- javascript - Vue & Vuex 没有在 html 中检索到正确的值
- c++ - 用 cairo 绘制贝塞尔路径
- firebase - Firebase REST-API 使用 iOS 最低版本创建短动态链接
- javascript - 每 X 秒循环一个新的 json 对象
- r - R:如何编写一个函数来从一个数据帧中提取特定值以便输入另一个数据帧
- python - 未找到 PYTHONPATH
- itext - 将添加图像到 pdf 从 iText 迁移到 PDFBox
- python - 如何使用 python 将我的计算结果从终端重定向到 .dat 文件
- r - 在geom_col中为特定“年份”添加所有正负值后如何绘制柱形图?
- java - 理解代码流程:菱形运算符和匿名类