如何添加两个小时和分钟的地图并将它们添加到 python

How to add two maps of hours and minutes and add them in python

所以我有两个持续时间的指令:

a = {hours: 13, minutes: 23}
b = {hours: 23, minutes: 42}

我想将它们加在一起,所以最终输出将是:

{hours: 37, minutes: 5}

是否有任何 python 内置库可以帮助我做到这一点,或者我是否必须编写自己的函数?

字典键必须是可散列的,所以让我们将它们设为字符串。然后,将其分解为简单的步骤:

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}

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}
  1. 正在将总秒数转换为分钟
  2. 将分钟转换为小时和分钟
  3. 用字符串 "hours""minutes" 压缩以创建 适合传递给 dict.
  4. 的元组序列

这是一个解决方案,它首先将所有时间指令加在一起,然后从分钟值中移动任何额外的小时数。

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}