python - Csv 文件并为字典提供某些键

标签 python python-2.7 python-3.x csv

我有一个 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/

相关文章:

python-3.x - VSCode 中 python3 的 sqlite 语法高亮显示

python - 为什么这些 numpy 操作不等效,我该如何解决这个问题?

python - 为什么在 Jupiter Notebook 上执行单元测试时会出现 AttributeError?

python - 如何使用相同的URL为GET和POST请求设置不同的permission_classes?

具有其他含义的 Python 运算符(如打印 V 形)

python - 为什么这些点在Python中不相等?

python - Python tkinter 时钟的白天主题和夜间主题

python - 为什么在使用 json.dumps 时 python dict 的 int 键会变成字符串?

python - Selenium :无法下载文件

python - 如果顺序无关紧要,如何比较python中的两个字符串?