首页 > 解决方案 > 总结dict中值列表中的时间戳

问题描述

我有一本字典,其值为时间戳。很少有键将时间戳列表作为值。我正在尝试对有价值的时间戳求和。但失败并出现以下错误:

Traceback (most recent call last):
  File "testing.py", line 53, in <module>
    for key, value in total_exam_items.iteritems():
AttributeError: 'dict' object has no attribute 'iteritems'

下面是我的代码:

total_items = {'item1': ['0:02:00'], 'item2': ['0:02:13'], 'item3': ['0:04:53'], 'item4': ['0:00:31', '0:05:17'], 'item5': ['0:04:31'], 'item6': ['0:04:34'], 'item6': ['0:13:26', '0:04:24']}
output = defaultdict(datetime)
for key, value in total_items.iteritems():
    output[key] += value

不知道我在哪里做错了?请问有什么建议吗???

标签: pythonlistdictionarytimestamp

解决方案


我认为这里的重点(除此之外.items())是,timedelta如果您想要每个项目的时间总和,则需要使用,例如

from collections import defaultdict
from datetime import timedelta
from pandas import to_timedelta

total_items = {'item1': ['0:02:00'], 'item2': ['0:02:13'], 'item3': ['0:04:53'], 'item4': ['0:00:31', '0:05:17'], 'item5': ['0:04:31'], 'item6': ['0:04:34'], 'item6': ['0:13:26', '0:04:24']}
output = defaultdict(timedelta)

for key, value in total_items.items():
    l = [to_timedelta(s) for s in value]
    for t in l:
        output[key] += t
        
# output
# defaultdict(datetime.timedelta,
#             {'item1': Timedelta('0 days 00:02:00'),
#              'item2': Timedelta('0 days 00:02:13'),
#              'item3': Timedelta('0 days 00:04:53'),
#              'item4': Timedelta('0 days 00:05:48'),
#              'item5': Timedelta('0 days 00:04:31'),
#              'item6': Timedelta('0 days 00:17:50')}) 

请注意,我to_timedeltapandaslib 中使用它,因为它提供了从字符串中方便地解析 timedeltas。


推荐阅读