gpt4 book ai didi

python - 将 python 对象转换为列表的列表

转载 作者:太空宇宙 更新时间:2023-11-03 17:36:54 25 4
gpt4 key购买 nike

我正在尝试将 sqlalchemy 对象转换为列表列表:

我尝试过这样做:

lambda q: [q.all() 中 obj 的位置.名称]

并且成功了。

但是当我想向列表中添加/追加另一个时,它就中断了:

lambda q: [(location.name, obj.name for obj, location in q.all()]

这就是我想要的:

lambda q: [
[位置.名称, str(obj.流量)]
对于 obj,位置在 q.all()]

预期输出:

[
['location name','10.0'],
['another location','20.15']
]

更新:

qry = db.Session.query(db.Log, db.Location).\
filter(db.Log.location_id == db.Location.id).\
filter(db.Log.location_id == id)

helpers.write_csv_from_query(resp, qry, falcon.HTTP_200, header,
lambda q: [
[location.name, str(obj.flowrate)]
for obj,location in q.all()])

处理对象查询的函数:

def write_csv_from_query(resp, query, status, header, result_func):
"""Writes CSV response."""
csv_name = date_to_str(datetime.now()) + ".csv"
csv_header = ','.join(header) + "\n"
# csv_data = convert_to_csv(result_func(query))
csv_data = []
csv_data = result_func(query)
csv_data = ','.join(csv_data)

resp.status = status
resp.content_type = 'text/csv'
resp.set_header('Content-disposition', 'attachment; filename=' + csv_name)
resp.body = csv_header + csv_data

最佳答案

由于在第一个示例中,location 与 lambda 分开显示(您的迭代变量称为 obj,我假设 location 是某个外部变量)变量(q 和您的 lambda 外部),您应该简单地执行

lambda q: [(location.name, obj.name for obj in q.all()]

或者最后一个例子:

lambda q: [[location.name, str(obj.flowrate)] for obj in q.all()]

或者,因为 obj.name 似乎等同于 location.name (这来自链接要点中的注释部分):

lambda q: [[obj.name, str(obj.flowrate)] for obj in q.all()]

甚至(如果是链接表):

lambda q: [[obj.location.name, str(obj.flowrate)] for obj in q.all()]

(我无法从您给出的内容中真正判断出什么是正确的表述,但我猜这是其中之一。)

<小时/>

摘要:仅迭代一 (1) 个对象,并从该单个对象中提取信息。

关于python - 将 python 对象转换为列表的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31095221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com