如何添加两个小时和分钟的地图并将它们添加到 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}
- 正在将总秒数转换为分钟
- 将分钟转换为小时和分钟
- 用字符串
"hours"
和 "minutes"
压缩以创建
适合传递给 dict
. 的元组序列
这是一个解决方案,它首先将所有时间指令加在一起,然后从分钟值中移动任何额外的小时数。
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}
所以我有两个持续时间的指令:
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}
- 正在将总秒数转换为分钟
- 将分钟转换为小时和分钟
- 用字符串
"hours"
和"minutes"
压缩以创建 适合传递给dict
. 的元组序列
这是一个解决方案,它首先将所有时间指令加在一起,然后从分钟值中移动任何额外的小时数。
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}