You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改字典中datetime类型键的小时为12且不改动其他部分

修改字典中datetime键的小时部分

核心思路

datetime对象是不可变类型,无法直接修改已有对象的属性,因此需要为每个键创建一个新的datetime对象(将小时替换为12),再把原键对应的值映射到新键上,最终生成新字典或覆盖原字典。

方法1:字典推导式(简洁高效)

直接通过推导式遍历原字典的键值对,用datetime.replace(hour=12)生成新键:

import datetime

# 原字典
original_dict = {
    datetime.datetime(2022, 6, 1, 0, 0): 42.3425,
    datetime.datetime(2022, 7, 1, 0, 0): 24.251666666666665,
    datetime.datetime(2022, 8, 1, 0, 0): 27.058333333333334,
    datetime.datetime(2022, 9, 1, 0, 0): 6.960000000000001,
    datetime.datetime(2022, 10, 1, 0, 0): 0.0,
    datetime.datetime(2022, 6, 2, 0, 0): 15.950833333333334,
    datetime.datetime(2022, 7, 2, 0, 0): 33.69916666666667,
    datetime.datetime(2022, 8, 2, 0, 0): 12.700000000000001,
    datetime.datetime(2022, 9, 2, 0, 0): 5.406666666666666,
    datetime.datetime(2022, 10, 2, 0, 0): 0.035833333333333335,
    datetime.datetime(2022, 6, 3, 0, 0): 14.744166666666667,
    datetime.datetime(2022, 7, 3, 0, 0): 30.455833333333334,
    datetime.datetime(2022, 8, 3, 0, 0): 14.745,
    datetime.datetime(2022, 9, 3, 0, 0): 8.981666666666667,
    datetime.datetime(2022, 10, 3, 0, 0): 0.035,
    datetime.datetime(2022, 6, 4, 0, 0): 42.14000000000001,
    datetime.datetime(2022, 7, 4, 0, 0): 18.213333333333335,
    datetime.datetime(2022, 8, 4, 0, 0): 11.723333333333336,
    datetime.datetime(2022, 9, 4, 0, 0): 6.530833333333334,
    datetime.datetime(2022, 10, 4, 0, 0): 0.4883333333333333,
    datetime.datetime(2022, 6, 5, 0, 0): 55.175000000000004,
    datetime.datetime(2022, 7, 5, 0, 0): 43.63749999999999,
    datetime.datetime(2022, 8, 5, 0, 0): 22.379999999999995,
    datetime.datetime(2022, 9, 5, 0, 0): 2.7191666666666667,
    datetime.datetime(2022, 6, 6, 0, 0): 20.865,
    datetime.datetime(2022, 7, 6, 0, 0): 35.29416666666666
}

# 生成修改后的新字典
modified_dict = {dt_key.replace(hour=12): value for dt_key, value in original_dict.items()}

方法2:循环遍历(直观易懂)

如果需要更清晰的步骤展示,可以用循环逐个处理:

import datetime

original_dict = {
    datetime.datetime(2022, 6, 1, 0, 0): 42.3425,
    datetime.datetime(2022, 7, 1, 0, 0): 24.251666666666665,
    # 其余键值对同上,此处省略
}

modified_dict = {}
for dt_key, value in original_dict.items():
    # 创建新的datetime对象,仅修改小时为12
    new_dt_key = dt_key.replace(hour=12)
    modified_dict[new_dt_key] = value

关键说明

  • datetime.replace()方法会返回一个新的datetime对象,原对象不会被修改,完美适配字典键不可变的特性。
  • 两种方法最终都会得到所有键的小时为12、其他属性(年、月、日、分)保持不变的新字典。

内容的提问来源于stack exchange,提问作者rail

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 08:35:23