问题描述
我是python的初学者,正试图找出一种方法来创建CSV文件中的名称字典和值列表。我在网上遇到了这段代码。它有效,但是我听不懂。
任何帮助将不胜感激。
我感到迷路的主要地方是for循环,然后是strand =...。最后是curr_row = row.strip()。split(',')]
代码:
strands = []
persons = {}
for ind,row in enumerate(csv_file):
if ind == 0:
strand = [strand for strand in row.strip().split(',')][1:]
else:
curr_row = row.strip().split(',')
persons[curr_row[0]] = [int(x) for x in curr_row[1:]]```
the csv file looks like this:
name,AGATC,AATG,TATC
Alice,2,8,3
Bob,4,1,5
Charlie,3,5
output : {'Alice': [2,3],'Bob': [4,5],'Charlie': [3,5]}
解决方法
带有enumerate的for循环将获得ind作为该行的索引,而变量row是该行上的数据。
该链是csv_file的第一行,并且列表理解正在该行上运行。如果您不确定列表理解是什么,请通过以下链接进行说明:https://www.pythonforbeginners.com/basics/list-comprehensions-in-python
row.strip()函数将删除所有空格。
.split(',')函数会将csv_file中的该行变成由','逗号分隔的项目列表。
因此,子链为['name','AGATC','AATG','TATC']。
curr_row在以下几行中执行相同的操作。
因此,csv_file中的第二行是:
Alice,2,8,3
运行后,
curr_row = row.strip().split(',')
在第二行,curr_row等于['Alice',2,8,3]
persons[curr_row[0]] = [int(x) for x in curr_row[1:]]
上方的行用键“ Alice”将其添加到字典中,然后使用列表理解力在其余数字上循环,这就是为什么如果您查看列表索引,它从1开始的原因。
curr_row[1:]
如果链接没有帮助,那么Corey Schafer的这部视频可能就是我学习如何使用列表推导的方式。
https://www.youtube.com/watch?v=3dt4OGnU5sM&t=3s
我希望能帮上忙。