有没有办法自动更改列表/字典名称?

时间:2021-04-09 09:12:14

标签: python csv

这是我的问题。

我有很多带有大量数据的 csv,我想提取年份函数中的几行。将每一年分开对我来说很重要,所以我决定为每一年创建各种列表/字典并提取我感兴趣的数据。

问题是每个文件的年数不同,手动创建列表 /dict 会太长。

在我的代码中,我提取了最小和最大年份,现在我想创建一个循环来重命名我拥有的每一年的列表/字典。

我不知道我可以使用哪个功能..也许我只是弄错了,我的逻辑现在不好?这是我提取文件中的年数的方法。

import csv
with open('file.csv') as rawFile:
reader = csv.DictReader(rawFile, delimiter=';')

firstDate = next(reader)["date"]
currentYear = firstDate.split('/')[-1]
minYear=int(currentYear)
for row in reader :
    date=row["date"]       

maxiYear=int(date.split('/')[-1])

nbList=maxiYear-minYear 
print(nbList)

非常感谢您的帮助,对不起我的英语,很久没有说这种语言了。

编辑:我的表结构:

<头>
日期 Q
01/01/1800 120.5
02/02/1800 150.2
03/02/1800 85.3
04/02/1800 75.5

1 个答案:

答案 0 :(得分:0)

我们创建了一个以年份为键、对应行列表作为值的字典。

我们可以使用 collections.defaultdict 当我们访问尚不存在的密钥时,这将动态创建空列表。

我们只需要对行进行迭代并将每一行附加到其年份的列表中:

import csv
from collections import defaultdict


with open('file.csv') as rawFile:
    reader = csv.DictReader(rawFile, delimiter=';')

    rows_by_year = defaultdict(list)
    for row in reader:
        year = row["date"].split('/')[-1]
        rows_by_year[year].append(row)