我的sql查询:
select id,value,zvalue from axis
给我这样的结果:
ans=(1,23,34)(12,34,35)(31,67,45)(231,3412,234)
现在如果我想要所有这 3 个变量作为 3 个不同的列表
id,value,zvalue=zip(*ans)
它会给我 3 个单独的列表。 但如果我只想将 id 和 value 作为单独的列表。它会给我太多的值来解包错误。
id,value =zip(*ans)
有什么方法可以让我从 sql 查询创建任意数量的列表。因为如果查询中有 10 个参数,我必须在使用 ZIP 时使用所有参数??? 请帮忙
参数的数量必须匹配,这是Python 2中的规则。对于Python 3,您可以使用*来捕获到列表中。
常见的 pythonic (2.x) 解决方法是使用
_
来表示您不会使用的变量,即:
id,value,_ = zip(*ans) # only works for exactly three values
正如 DSM 所评论的,对于 Python 3,您可以使用 * 来获取“剩余”参数作为列表:
id, value, *_ = zip(*ans) # _ will be a list of zero or more args
或者,最简单,只需对 zip 的返回进行切片:
id,value = zip(*ans)[:2] # ignore all but first two values
如果您使用的是 Python 3,您可以使用它来解压 n 附加元素:
In [0]: a, b, *_ = (1, 2, 3, 4)
In [1]: a
1
我想你可能正在寻找这样的东西:
ids = [t[0] for t in ans]
values = [t[1] for t in ans]
第一个列表理解获取
ans
中所有元组中的第一列,即 id
列。第二个列表理解获取 ans
中所有元组的第二列,即 value
列。