Python中如何将多个日期统一追加到单个列表中?
解决循环中日期列表重复初始化的问题
问题核心是你把dates = []放在了循环内部,每次迭代都会重新创建空列表,导致之前的日期被丢弃。要让所有符合条件的日期存入同一个列表,只需把列表初始化移到循环外面。
正确实现步骤
- 导入所需模块:
import json from datetime import datetime, timedelta
- 初始化存储日期的列表(必须在循环外),并计算近24小时的时间阈值:
dates = [] # 计算当前时间往前推24小时的阈值 time_threshold = datetime.now() - timedelta(hours=24)
- 循环处理每个类JSON字符串:
# 示例数据,替换成你的实际字符串列表 json_str_list = [ '{"date": "2024-05-20 09:30:00", "content": "foo"}', '{"date": "2024-05-19 10:00:00", "content": "bar"}', '{"date": "2024-05-18 08:00:00", "content": "baz"}' ] for json_str in json_str_list: # 转成字典 data_dict = json.loads(json_str) # 将date字符串转成datetime对象(注意格式要和你的date字段匹配) date_obj = datetime.strptime(data_dict['date'], '%Y-%m-%d %H:%M:%S') # 判断是否在近24小时内,符合条件就追加到列表 if date_obj >= time_threshold: dates.append(date_obj)
- 验证结果:
print(f"最终日期列表:{dates}") print(f"列表长度:{len(dates)}") # 符合条件时输出2
注意事项
- 确保
datetime.strptime的格式参数和你的date字段字符串格式完全匹配,比如如果是ISO 8601格式(如2024-05-20T09:30:00),可以用datetime.fromisoformat(data_dict['date'])更简便。 - 如果你的循环是在函数内部,也要确保
dates列表在函数内的循环外初始化,或者作为函数参数传入。
内容的提问来源于stack exchange,提问作者Samara kayed
相关产品推荐
相关产品推荐

