gpt4 book ai didi

python - 在python中,如何更改列表的元素数据类型

转载 作者:太空宇宙 更新时间:2023-11-03 16:26:28 24 4
gpt4 key购买 nike

使用 python3.4.3 和 psycopg2

我有以下 SQL 查询

SELECT
somestring1,
somestring2,
float1,
float2,
float3
FROM
table

我想将 float1、float2、float3 合并为一个 float[],然后使用 UPDATE将其返回数据库所以我编写以下内容:

res = cur.fetchall()
date = list(map(lambda x: x[0],res))
code = list(map(lambda x: x[1], res))
#vector = list(map(lambda x: list(map(float,x[2:])), res)) # this one works
vector = list(map(lambda x:x[2:],res)) # which won't work
res = list(zip(vector,date,code))
cur.executemany("""
UPDATE mapped SET
vector = %s
WHERE
date = %s AND
code = %s
""",res) # error occurs here

错误信息:

psycopg2.ProgrammingError: column "vector" is of type double precision[] but expression is of type record
LINE 3: vector = (16.25, 15.56, 16.07, 133.409279, 15.35...
^
HINT: You will need to rewrite or cast the expression.

根据错误消息,我的猜测是当vector时创建它的创建就像某种 list<Any>而不是list<float> 。我怎样才能比用 map 将每个元素强制 float 更简单? ?

最佳答案

您正在传递一个元组列表。 Psycopg 将元组改编为记录。当列表适应数组时,您需要传递列表的列表:

vector = list(map(lambda x:list(x[2:]),res))

关于python - 在python中,如何更改列表的元素数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37942498/

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