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

Python按partial key分组JSON:按月份分组代码最后一行逻辑疑问

按月份分组代码逻辑详解

前置说明

你用到的defaultdict(list)是Pythoncollections模块提供的扩展字典类型,核心特性是访问不存在的键时,会自动将该键的值初始化为你指定类型的空实例(这里是空列表),省去了普通字典需要手动判断键是否存在、手动初始化空列表的冗余代码。

遍历流程梳理

代码遍历的是你存储所有天气数据的列表d,每一次循环处理单条JSON数据对象:

  1. 取出当前数据的Unix时间戳值json_obj["timestamp"]
  2. 调用datetime.fromtimestamp()将纯数字的Unix时间戳转换为包含完整年、月、日、时分秒信息的datetime对象dt_obj
  3. 将原数据里的数字时间戳替换为格式化的可读字符串%Y-%m-%d %H:%M:%S
  4. 最后一行就是完成分组的核心逻辑

最后一行的运行逻辑拆解

你可以把month_data[dt_obj.strftime("%Y-%m")].append(json_obj)拆成两个步骤理解:

第一步:获取对应月份的存储列表

首先执行dt_obj.strftime("%Y-%m"),将当前数据的datetime对象格式化为年-月格式的字符串(比如你示例里的三个数据对应的时间戳都属于2000年1月,得到的字符串就是2000-01),用这个字符串作为键去month_data中取值:

  • 如果这个年-月键是第一次出现,defaultdict会自动创建该键,对应值为空列表
  • 如果该键已经存在,直接返回之前已经存储了同月份其他数据的列表

第二步:存入当前数据

调用列表的append()方法,把处理好的当前单条JSON对象,追加到对应月份的列表末尾。

遍历完全部数据后,month_data的所有键就是所有数据覆盖到的年-月值,每个键对应的值就是该月份的所有天气数据列表。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:54:01