如何在Python字典中轻松操作时间戳键?

kra*_*pht 2 python time dictionary

我刚开始使用Python作为业余爱好,所以请原谅我,如果这是一个愚蠢的问题.

我最近在我的电脑上安装了一个功率计,我用它来跟踪它的功耗.它为我提供了导出到csv文件的实时分钟读数.

我已经解析并读取了文件,现在我有一个字典,其中键是时间戳,存储为时间库中的struct_time.目前,该词典具有每分钟读取的读数.我想创建一个新的字典,其键是小时时间戳,其值是各个分钟读数的总和.

我想过用一个计数器模式60循环字典,但我被告知这不是非常Pythonic.此外,无法保证每小时有60个读数.我该怎么做?

Nad*_*mli 9

如果我对你的问题的理解是正确的,那么这应该做的工作:

from collections import defaultdict
output = defaultdict(int)
for key, value in readings.iteritems():
    output[key.tm_hour] += value
Run Code Online (Sandbox Code Playgroud)

使用defaultdict的优点是它将通过返回0作为值来处理丢失小时的情况.

编辑:

正如克里斯蒂安所指出的那样,OP可能会有几天的读数.在这种情况下,我遵循Adam Rosenfield首先介绍的建议,略作修改:

from collections import defaultdict
from datetime import datetime
output = defaultdict(int)
for key, value in readings.iteritems():
    output[datetime(*x[:4])] += value
Run Code Online (Sandbox Code Playgroud)

这将构建日,月,年和小时的日期,而不是分钟或秒.