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

Python如何将嵌套日期字典的同键数值按顺序聚合成列表?

实现方案

方案1:兼容性最强的写法(推荐)

用collections.defaultdict实现,自动处理键的初始化,且兼容内层字典键不完全一致的场景:

import datetime
from collections import defaultdict

d = {datetime.date(2013, 1, 1): {'15169': 2, '56203': 5, '2519': 3, '18144': 3, '9737': 4},
     datetime.date(2014, 1, 1): {'15169': 5, '56203': 3, '2519': 2, '18144': 1, '9737': 0}}

# 按日期升序排列外层元素,保证列表内数值的顺序符合时间先后
sorted_date_items = sorted(d.items(), key=lambda item: item[0])

result = defaultdict(list)
for _, inner_dict in sorted_date_items:
    for str_key, value in inner_dict.items():
        result[int(str_key)].append(value)

# 按需转为普通字典
result = dict(result)

输出结果:

{15169: [2, 5], 56203: [5, 3], 2519: [3, 2], 18144: [3, 1], 9737: [4, 0]}

方案2:极简一行流

如果确认所有内层字典的键完全一致,可以用字典推导式实现更短的写法:

result = {int(k): [d[dt][k] for dt in sorted(d)] for k in next(iter(d.values()))}

注意事项

  • 必须对外层的日期键做排序,Python 3.7之前的版本字典不保证插入顺序,不排序可能导致列表内数值顺序错误
  • 如果存在部分内层字典缺少对应键的场景,可以把取值逻辑改为d[dt].get(k, 0),用默认值(示例为0)填充缺失位

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:06:08