【发布时间】:2019-05-22 18:28:45
【问题描述】:
我正在尝试调整从 csv 文件导入到 python 字典中的数据。 (我使用了csv.DictReader()。)我认为 DictReader 创建了一个嵌套字典,每个子字典都是 csv 文件中的一行。
我正在尝试遍历每一行,更改与某些列名键对应的值。
我尝试将其输入为generator_units_dict[row][self.fom_cost_column] = whatever_calculation,但这给了我一个错误:'DictReader' object is not subscriptable
def adjust_generator_data(self, generator_units_dict):
for row in generator_units_dict:
row[self.fom_cost_column] = str(float(row[self.fom_cost_column])*1000)
row[self.fom_other_cost_column] = str(float(row[self.fom_other_cost_column])*1000)
row[self.fuel_cost_column] = str(float(row[self.fuel_cost_column])* float(row[self.heat_rate_column])/1000)
return generator_units_dict
在此之后,当我运行类似的东西时
for row in generator_units_dict:
print(row)
我希望得到:
OrderedDict([('unity', '10'), ('regiony', '1'), ('capmwy', '1250'), ('fuelcosty', '26.851743334570003'), ('vomcosty', '2.17'), ('fomcosty', '30240.0'), ('vothery', '0'), ('fothery', '0.0'), ('heatratey', '7237.666667'), ('so2ratey', '0'), ('noxratey', '0.0730304'), ('availy', '0.8'), ('rmcfy', '1'), ('planttype1y', 'CC'), ('reg512y', 'NY_Z_J'), ('gwhty', '20408.04518'), ('gwhsy', '9543.262571'), ('tbtuty', '145.7268107'), ('unitcodey', '1'), ('winteravy', '0.8'), ('wshldravy', '0.8'), ('summeravy', '0.8'), ('noxmtonty', '1.064248685'), ('fuelsy', 'GA DZ')])
orderedDict([('unity', '11'), ('regiony', '1'), ('capmwy', '1250'), ('fuelcosty', '26.851743334570003'), ('vomcosty', '2.17'), ('fomcosty', '30240.0'), ('vothery', '0'), ('fothery', '0.0'), ('heatratey', '7237.666667'), ('so2ratey', '0'), ('noxratey', '0.0730304'), ('availy', '0.8'), ('rmcfy', '1'), ('planttype1y', 'CC'), ('reg512y', 'NY_Z_J'), ('gwhty', '20408.04518'), ('gwhsy', '9543.262571'), ('tbtuty', '145.7268107'), ('unitcodey', '1'), ('winteravy', '0.8'), ('wshldravy', '0.8'), ('summeravy', '0.8'), ('noxmtonty', '1.064248685'), ('fuelsy', 'GA DZ')])
但是控制台上既没有返回错误也没有返回数据。
【问题讨论】:
-
“我认为 DictReader 创建了一个嵌套字典,每个子字典都是 csv 文件中的一行。”它不是。
DictReader创建一个DictReader对象,它是dict对象的惰性迭代,代表 csv 中的行。这就是为什么当您尝试下标该对象时,它会引发错误:'DictReader' object is not subscriptable -
您已经说过当您执行
generator_units_dict[row][...]时会出现什么错误,但是您发布的代码会出现什么错误,即row[...]? -
我已更改标题并尝试澄清输出。
标签: python python-3.x csv dictionary