我正在尝试将数据点存储在列表中,其中的键与收集数据点的日期相对应(我的文件中的日期介于2到9个月之间)。我希望字典看起来像这样:
{year : { month : {day : [datapoint(x24)]}}}
在我加入defaultdict之前,我的代码会报告一个关键错误:
File "test_file3.py", line 35, in <module>
my_dict[year][month][day].append(float(row[SENSOR]))
KeyError: '2018'
如果包含defaultdict,则会出错:
File "test_file3.py", line 35, in <module>
my_dict[year][month][day].append(float(row[SENSOR]))
TypeError: list indices must be integers or slices, not str
但是,我知道我附加的实际上是一个浮动。那么,为什么它失败了(除了我糟糕的编程技巧)。如果它疯了我的价值是浮动,我怎么能解决这个问题呢? (我需要这个值是浮点数)。
infile = open('/Users/joshuaclarkgilman/Documents/5G0E3577 4May18-1146.csv',
'r')
outfile = open('/Users/joshuaclarkgilman/Documents/test_file.csv', 'w')
from collections import defaultdict
my_dict = defaultdict(lambda: defaultdict(list))
#functions here
for row in infile:
row = row.strip()
row = row.split(",")
if row[0] == "\ufeff5G0E3577" or row[0] == "2015 records" or row[0] == "Measurement Time":
continue
else:
year = Year_Function(row[0].split("/"))
month = Month_Function(row[0].split("/"))
day = Day_Function(row[0].split("/"))
my_dict[year][month][day].append(float(row[SENSOR]))
infile.close()