我有一个 Csv 文件,其温度单位为摄氏度。像这样:
17;15;13;13;12;13;14;15;15;16;17;18;19;21;23;25;25;23;22;22;21;19;18;18
每个数字是一天中 X 小时的温度,csv 是有序的。 现在我想给每个条目一个键,如下所示:
{0: 17, 1: 15, 2:13, 3: 13, 4: 12, ... 23: 18}
是的,我没有使用 AM/PM 时间格式,我知道如何读取 csv 文件并将其作为字典列表返回,我的问题是如何为其提供某些键。
def read_temp(file_csv):
import csv
with open('file_csv', 'rU') as file_csv:
reader = csv.DictReader(file_csv)
result = []
for d in reader:
result.append(d)
return result
我可以使用 fieldnames = ['0' , '1', '2', '3, '4', '5',... '23'] 来做到这一点,但这并不是最好的方法,想象一下我必须为 100 个键做这件事...
有人知道更好的方法吗?提前。
最佳答案
要像您给出的示例一样使用数字键,请尝试以下操作:
result = {} # a dictionary, not a list
for idx, d in enumerate(reader):
result[idx] = d
enumerate
函数将为您提供从 0 开始的 idx
以及每个数据项 d
。
但我认为 @SilentMonk 是对的 - 您现有的代码可以让您访问 result[0]
就可以了。
编辑我又看了一眼DictReader
。试试这个:
reader = csv.DictReader(file_csv, fieldnames=range(24))
其余代码保持不变。这应该会给你你所期望的。 range(24)
生成列表 [0, 1, ..., 23]。文件每一行中的 24 个值将被赋予从 0 到 23 的相应键。
关于python - Csv 文件并为字典提供某些键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38106158/