【发布时间】:2021-09-29 21:18:36
【问题描述】:
我需要读取 CSV 文件并用文件中的数据填充字典。所以我写了一个方法
def read_data(self):
with open('storage/data/heart.csv') as f:
self.raw_data = {
len(self.raw_data): {
'age':line[0],
'sex':line[1],
'cp':line[2],
'trtbps':line[3],
'chol':line[4],
'fbs':line[5],
'restecg':line[6],
'thalachh':line[7]
} for line in csv.reader(f)}
但是 print(raw_data) 会返回这个:
{0: {'age': '57', 'sex': '0', 'cp': '1', 'trtbps': '130', 'chol': '236', 'fbs': '0', 'restecg': '0', 'thalachh': '174'}}
如您所见,我的方法仅将 1 行保存到 dict 中,而这一行是文件的最后一行。请帮助我
【问题讨论】:
-
您的意思是
len(line)而不是len(self.raw_data)?否则,您将在循环中一遍又一遍地使用相同的键。否则,如果这只是一个索引,则没有理由将dict存储在list中,您可以稍后使用enumerate获取每个元素的(index,value) -
只有一个字典键 (
len(self.raw_data)) 被写入。为什么会期望看到更多的键? -
@CoryKramer:
len(line)也没有任何意义。可能有 2 行长度相同
标签: python dictionary generator