如何在Python中用两个列表构建字典或JSON(Flask+PostgreSQL场景)
解决方案
核心需求是将数据库中同日期的文本字段分组,生成以日期为键、对应文本数组为值的对象列表,以下是修正后的实现方案:
修正后代码
import json from flask import jsonify # 假设cursor为执行查询后的数据库游标 date_group = {} result = [] for row in cursor.fetchall(): # 按需求格式化日期为DD-MM-YYYY格式 cdate = row[0].strftime("%d-%m-%Y") text_content = row[1] # 按日期分组存储文本 if cdate not in date_group: date_group[cdate] = [] date_group[cdate].append(text_content) # 转换为目标JSON结构的列表 for date, texts in date_group.items(): result.append({date: texts}) # Flask直接返回jsonify,自动处理序列化和响应头 return jsonify(result)
关键修正说明
- 日期格式处理:原代码中
cdate1=date[0]是错误逻辑,改用strftime直接格式化日期,避免字符串拆分的冗余操作,若数据库日期格式不同,可调整strftime的参数(如%Y-%m-%d对应年-月-日)。 - 分组逻辑优化:先用字典
date_group按日期聚合文本列表,避免重复创建对象,最后再转换为目标的列表结构。 - Flask响应优化:使用Flask内置的
jsonify方法,比手动json.dumps再json.loads更高效,还能自动设置正确的HTTP响应头。 - 无效代码清理:移除了原代码中未定义的
text_output、无意义的row[4]判断等错误内容。
内容的提问来源于stack exchange,提问作者Narashimhaa Kannan
相关产品推荐
相关产品推荐

