You need to enable JavaScript to run this app. Python遍历多列存储的新冠表格 设计循环定位单日全球病例峰值
优惠活动
大模型
产品
解决方案
定价
更多

Python遍历多列存储的新冠表格 设计循环定位单日全球病例峰值

实现逻辑与代码

核心思路是以“月份+日期”为唯一聚合键,先遍历所有记录累计每个自然日的全球总病例数,再从累计结果中找到病例数最高的日期即可,全程只需要线性遍历,不需要设计冗余的多层嵌套循环。

原生Python实现(无第三方依赖)

这种实现逻辑完全透明,不需要额外安装第三方库,哪怕数据量到几十万条也能顺畅运行:

  • 初始化一个字典,用(月份值, 日期值)的元组作为键,存储对应日期的全球累计总病例数
  • 借助四个列表长度完全一致的特性,通过同一索引遍历每一条原始记录,把单条记录的病例数累加到对应日期的字典条目下
  • 遍历字典的所有条目,追踪累计病例数最高的日期即可

示例代码:

# 初始化每日总病例存储字典
daily_total_cases = {}

# 逐记录遍历,一次完成所有日期的病例聚合
for record_idx in range(len(month)):
    m = month[record_idx]
    d = day[record_idx]
    case_count = cases[record_idx]
    date_key = (m, d)
    # 字典没有对应日期条目时初始化,存在则直接累加
    daily_total_cases[date_key] = daily_total_cases.get(date_key, 0) + case_count

# 遍历聚合结果找最高值
highest_total = -1
peak_date = None
for (m, d), total in daily_total_cases.items():
    if total > highest_total:
        highest_total = total
        peak_date = f"{m}月{d}日"

print(f"全球总病例最高的日期为{peak_date},当日累计总病例为{highest_total}")

对应题面给出的示例数据运行后,会正确输出1月3日、总病例709的匹配结果。

大数据量场景的高效实现(基于pandas)

如果原始记录规模较大,用pandas的分组聚合可以大幅减少手写循环的代码量,运行效率也更高:

import pandas as pd

# 直接把四个输入列表转为结构化表格
covid_df = pd.DataFrame({
    "month": month,
    "day": day,
    "location": location,
    "cases": cases
})

# 按月份、日期分组求总病例,取排序后最高值对应的行
peak_row = covid_df.groupby(["month", "day"])["cases"].sum().sort_values(ascending=False).iloc[0]
print(f"全球总病例最高的日期为{int(peak_row.name[0])}月{int(peak_row.name[1])}日,当日累计总病例为{peak_row}")

实现注意事项

  • 不需要特意设计嵌套循环逐月、逐天匹配所有记录,线性遍历一次做聚合的时间复杂度为O(n)(n为总记录数),是效率最高的循环结构
  • 不需要额外校验日期合法性(比如判断某月是否有31天、2月天数等),原始列表中本身就只包含实际存在的日期记录
  • 不要用字符串拼接日期作为字典键,直接用(month, day)的元组做键,既避免格式拆分的麻烦,也不会出现月份/日期格式不一致的匹配错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.06 02:06:04