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

Python如何按日期分组字典列表并取每日最高Total_Vaccinations值

解决方法

方案1:使用Python标准库实现(无需安装第三方依赖)

直接用内置的itertools.groupby即可实现分组+取最大值的逻辑,注意分组前需要先按日期排序,避免同日期的分散数据被拆分为多个分组:

from itertools import groupby

# 原始字典列表
data = [{'Reportdt': '2021-09-30',
  'Total_Vaccinations': 42107850,
  'Total_Individuals': None,
  'LastValue': 0,
  'ObjectId': 13452,
  'Elderly': 1655476,
  'FirstDose': 23386741,
  'SecondDose': 18721109},
 {'Reportdt': '2021-09-30',
  'Total_Vaccinations': 42107619,
  'Total_Individuals': None,
  'LastValue': 0,
  'ObjectId': 13451,
  'Elderly': 1655474,
  'FirstDose': 23386687,
  'SecondDose': 18720932},
 {'Reportdt': '2021-09-30',
  'Total_Vaccinations': 42107429,
  'Total_Individuals': None,
  'LastValue': 0,
  'ObjectId': 13450,
  'Elderly': 1655473,
  'FirstDose': 23386644,
  'SecondDose': 18720785},
 {'Reportdt': '2021-09-30',
  'Total_Vaccinations': 42107125,
  'Total_Individuals': None,
  'LastValue': 0,
  'ObjectId': 13449,
  'Elderly': 1655468,
  'FirstDose': 23386571,
  'SecondDose': 18720554},
 {'Reportdt': '2021-09-30',
  'Total_Vaccinations': 42106807,
  'Total_Individuals': None,
  'LastValue': 0,
  'ObjectId': 13448,
  'Elderly': 1655464,
  'FirstDose': 23386503,
  'SecondDose': 18720304}]

# 先按日期排序,保证同日期数据连续
sorted_data = sorted(data, key=lambda x: x['Reportdt'])
daily_max = {}

for date, items in groupby(sorted_data, key=lambda x: x['Reportdt']):
    # 取当前分组下Total_Vaccinations的最大值
    daily_max[date] = max(i['Total_Vaccinations'] for i in items)

print(daily_max)
# 输出结果:{'2021-09-30': 42107850}

方案2:使用pandas实现(适合大数据量/数据分析场景)

如果已经在使用pandas处理数据,实现逻辑会更简洁:

import pandas as pd

df = pd.DataFrame(data)
daily_max = df.groupby('Reportdt')['Total_Vaccinations'].max().to_dict()
print(daily_max)
# 输出结果和方案1完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:06:07