如何将SQLAlchemy查询结果转为日期为键的Python字典?
解决方案
有两种直接的实现方式,可根据你的实际场景选择:
方式1:基于已有的字典列表转换
如果你已经通过[u._asdict() for u in test_results]得到了包含{'date':'xxx','prcp':xxx}的列表(假设该列表变量名为dict_list),可以用字典推导式直接生成目标字典:
date_prcp_dict = {item['date']: item['prcp'] for item in dict_list}
方式2:直接从SQLAlchemy查询结果转换
其实不需要先把查询结果转成字典列表,session.query(Measurement.date, Measurement.prcp).all()返回的是包含(date, prcp)的元组列表,直接对这个结果做推导更高效:
test_results = session.query(Measurement.date, Measurement.prcp).all() date_prcp_dict = {date: prcp for date, prcp in test_results}
特殊情况处理
如果数据中存在同一date对应多个prcp值的情况,上述方法会让后出现的prcp覆盖先出现的。若需要保留所有prcp值,可以用defaultdict将值存为列表:
from collections import defaultdict date_prcp_dict = defaultdict(list) for date, prcp in test_results: date_prcp_dict[date].append(prcp)
内容的提问来源于stack exchange,提问作者Itsnhantransitive
相关产品推荐
相关产品推荐

