我有这个元组:
q =({'sum(total)': Decimal('89')},)
我需要在一个单独的变量中从中提取数字。我试过了
(x1,x2) = q
但这会引发错误:
E ValueError: need more than 1 value to unpack
我对元组并不熟悉,也没有更多的想法如何提取它。
答案 0 :(得分:2)
您的元组仅包含一个元素,一个包含一个键值对的字典。如果你想提取那对,你需要解决它:
(x1, x2), = q[0].items()
上面的表达式从元组(字典)中提取第一个元素,并在其上调用dict.items()
方法。然后,生成的(key, value)
对序列将分配给(key, value),
左侧目标,该目标只能使用一个对。
演示:
>>> q = ({'sum(total)': Decimal('89')},)
>>> (x1, x2), = q[0].items()
>>> x1
'sum(total)'
>>> x2
Decimal('89')
您也可以迭代元组中的所有键值对,或者您可以使用键名。例如,后者看起来像这样:
decimal_value = q[0]['sum(total)']
您仍然可以在作业中使用解包:
contained_dictionary, = q
decimal_value = contained_dictionary['sum(total)']
这完全取决于您要实现的目标,以及字典是否具有不同的键,或者只应包含一个键值对。