python - 总结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
不知道我在哪里做错了?请问有什么建议吗???
解决方案
我认为这里的重点(除此之外.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_timedelta
从pandas
lib 中使用它,因为它提供了从字符串中方便地解析 timedeltas。
推荐阅读
- javascript - macOS 应用程序中的 WKWebView Web 检查器无法呈现和闪烁/闪烁
- java - Springboot+Hibernate 如何修复“传递给持久化的分离实体”
- java - 使用 currentTimeMillis() 比较 concat 和 append
- java - 数组[i] = scnr.nextInt(); 在线程“主”java.util.NoSuchElementException 中导致异常
- git - 如何恢复正常工作的 git 存储库?
- jspdf - 使用 jspdf autotable 绘制无标题表
- c# - 帮助解决 ASP.NET Core 3.1 应用程序中的“已经有一个打开的 DataReader 与此命令关联,必须先关闭”
- mysql - 使用 Svelte 连接数据库
- for-loop - Ocaml中for循环内的模式匹配
- python - 为什么你不能命名一个在函数中创建的对象,与它在 Python 中的类名完全相同?