将数据组织到嵌套字典中:错误"列表索引必须是整数或切片,而不是str"

时间:2018-06-15 14:58:27

标签: python-3.x

我正在尝试将数据点存储在列表中,其中的键与收集数据点的日期相对应(我的文件中的日期介于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()

0 个答案:

没有答案