如何“解包”这个元组

时间:2014-02-11 01:58:36

标签: python tuples

我有一个Python变量(数据库记录),打印如下:

((79321L, Decimal('11.56125119')),)

打印这两个值的最佳方法是什么?我想做这样的事情:

print("Count: {}, Result: {}".format(cur.fetchall()))

4 个答案:

答案 0 :(得分:2)

左侧拆包需要与右侧的结构相匹配。所以这将有效:

((x, y),) = ((79321L, Decimal('11.56125119')),)

你有一个单项元组,其内容是一个两项元组

答案 1 :(得分:2)

In [10]: a=((79321L, Decimal('11.56125119')),)
#a[0] is a tuple, use "*" to unpack a tuple when passing it as parameters:
In [11]: "Count: {}, Result: {}".format(*a[0])
Out[11]: 'Count: 79321, Result: 11.56125119'

请参阅how to unpack argument lists format examples

或使用old %-formatting operator

In [13]: "Count: %s, Result: %s"%a[0]
Out[13]: 'Count: 79321, Result: 11.56125119'

答案 2 :(得分:2)

如果您只期望单行,那么只需使用.fetchone(),然后您就不必担心解压缩,例如:

print('Count: {} Result: {}'.format(*cur.fetchone()))

或者,如果你有更多,那么循环光标:

for row in cur:
    print('Count: {} Result: {}'.format(*row))

答案 3 :(得分:1)

另一种选择,对于varitey:

value = ((79321L, Decimal('11.56125119')),)
a, b = list(value)[0]