在dict的值列表中汇总时间戳

2024-10-06 12:16:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本字典,它的值是时间戳。很少有键将时间戳列表作为值。 我试图求和时间戳的值。但由于以下错误而失败:

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

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


Tags: keyin列表foroutput字典value错误
2条回答

我认为这里的要点(除了.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')}) 

请注意,我使用的是pandas库中的to_timedelta,因为它提供了对字符串中时间增量的方便解析

如果您使用的是Python3.x

而不是:

for key, value in total_items.iteritems():

尝试:

for key, value in total_items.items():

相关问题 更多 >