如何添加两个小时和分钟的地图并在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中添加它们[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将数字拆分为数字并在其间添加一个字符

将 Int 转换为分钟并在文本框中显示 swift 3

如何匹配两个 DataFrame 中的特定值并在 Python Pandas 中添加额外的列? [复制]

使用当前位置将折线绘制到目的地,并在谷歌地图上添加标记,标记颤动

如何在 R 中为日期添加时间(午夜)并在没有 1 或 2 小时班次的情况下打印它?

从时间中提取小时并添加转换为小时的分钟以及从时间中提取分钟并找到提醒(模数)