如何添加两个小时和分钟的地图并在python中添加它们[重复]
Posted
技术标签:
【中文标题】如何添加两个小时和分钟的地图并在python中添加它们[重复]【英文标题】:How to add two maps of hours and minutes and add them in python [duplicate] 【发布时间】:2022-01-18 22:53:35 【问题描述】:所以我有两个持续时间的字典:
a = hours: 13, minutes: 23
b = hours: 23, minutes: 42
我想把它们加在一起,所以最终的输出是:
hours: 37, minutes: 5
是否有任何 python 内置库可以帮助我做到这一点,还是我必须编写自己的函数?
【问题讨论】:
他们每个人都只有这两个键吗? 大约 3 行代码。编写它比搜索库要快。datetime
模块可以进行增量添加,但您必须转换为它们的格式。
【参考方案1】:
将dict
值转换为datetime.timedelta
值很简单,之后您可以轻松添加它们。
>>> from datetime import timedelta
>>> timedelta(**a) + timedelta(**b)
datetime.timedelta(days=1, seconds=47100)
将总和转换回 dict
并不是那么简单,但仍然很容易。
>>> x = timedelta(**a) + timedelta(**b)
>>> dict(zip(("hours", "minutes"), divmod(int(x.total_seconds())//60, 60)))
'hours': 37, 'minutes': 5
-
将总秒数转换为分钟数
将分钟转换为小时和分钟
使用字符串
"hours"
和"minutes"
压缩以创建
适合传递给dict
的元组序列。
【讨论】:
【参考方案2】:字典键必须是可散列的,所以让我们将它们设为字符串。然后,将其分解为简单的步骤:
a = 'hours': 13, 'minutes': 23
b = 'hours': 23, 'minutes': 42
def add_times(a, b):
m = a['minutes'] + b['minutes']
h = (0 if m < 60 else 1) + a['hours'] + b['hours']
return 'hours': h, 'minutes': m % 60
print(add_times(a, b))
输出:
'hours': 37, 'minutes': 5
【讨论】:
@Mandera 哎呀。谢谢你。已编辑【参考方案3】:这是一个解决方案,它首先将所有时间字典相加,然后从分钟值开始移动任何额外的小时。
def sum_times(*time_dicts):
summed = key: sum(d[key] for d in time_dicts) for key in time_dicts[0]
summed["hours"] += summed["minutes"] // 60
summed["minutes"] %= 60
return summed
用你的例子
a = "hours": 13, "minutes": 23
b = "hours": 23, "minutes": 42
print(sum_times(a, b))
'hours': 37, 'minutes': 5
【讨论】:
以上是关于如何添加两个小时和分钟的地图并在python中添加它们[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何匹配两个 DataFrame 中的特定值并在 Python Pandas 中添加额外的列? [复制]
使用当前位置将折线绘制到目的地,并在谷歌地图上添加标记,标记颤动