在Python 2.7中解包元组

在Python 2.7中解包元组,python,tuples,args,keyword-argument,Python,Tuples,Args,Keyword Argument,实际上,在一个项目中,自制的本地DB api以元组的形式返回SQL请求的所有结果 就像这样: result = ( (result1.1, result1.2... ), (result2.1, .... ) .... ) ( (result1.1, result1.2... ), (result2.1, .... ) .... ) = result 问题是:当他们打开元组时,我们会得到很多很多。。。(许多)值错误,因为他们这样做: result = ( (result1.1, result

实际上,在一个项目中,自制的本地DB api以元组的形式返回SQL请求的所有结果

就像这样:

result = ( (result1.1, result1.2... ), (result2.1, .... ) .... )
( (result1.1, result1.2... ), (result2.1, .... ) .... ) = result
问题是:当他们打开元组时,我们会得到很多很多。。。(许多)值错误,因为他们这样做:

result = ( (result1.1, result1.2... ), (result2.1, .... ) .... )
( (result1.1, result1.2... ), (result2.1, .... ) .... ) = result
这导致了这些错误:

a = (1, 2)
(b,) = a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack

(b, c, d) = a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 2 values to unpack    
我的问题是:当我需要获取请求中的c列时,在解包时如何处理它

  • 使用更好的数据结构
  • 你应该考虑使用适当的数据,比如类/对象列表,这样你就不必像这样解包他们了。

  • 玩数据游戏第1部分
  • <代码>对于中的子值: my=GetValuerDefault(子值,0) killer=GetValuerDefault(子值,1) 数据=GetValuerDefault(子值,2) def GetValuerDefault(值,索引,默认值=无): returnValue=默认值 尝试: returnValue=值[索引] 除: 通过 返回值
  • 玩数据游戏第2部分
  • newDict=[{index:value代表索引,value代表枚举(项)}中的值代表结果中的项]
    

    python是灵活的,使用适合您需要的python 3:使用星号语法

    result = ((1,2), (3,4), (5,6))
    a, *_ = result
    # a == (1,2)
    # _ == [(3,4),(5,6)]
    
    对于Python2:使用切片

    result = ((1,2), (3,4), (5,6))
    a, b = result[:2]
    # a == (1,2)
    # b == (3,4)
    

    这不是当前有效的Python,您能给出一个数据和处理它的代码的示例吗?您是否可以对result中的result\u tuple执行例如
    ?接下来会发生什么?谁是
    我们
    谁是
    他们
    ?您使用的是哪个版本的python?元组解包是Python3的一个附加功能。还有更好的吗?“我们”是我和项目的新人,“他们”是项目的创始人你在使用什么数据库?您可以获取dict或命名元组而不是元组:,函数名中的Camle大小写违反了PEP-8!哈哈,我知道,但你会发现图书馆将使用它!我是PEP-8的超级粉丝,但在这个世界上,经常有规则是有意义的,而规则是没有意义的。每当我在库中看到这样的函数名时,我的眼睛开始流血:)那么我希望有一天你不会失血过多,。。。不是:)解决方案1看起来像AndreyT在评论中给我的建议,解决方案2似乎写得很长,即使是,它回答了我已经尝试过的问题,解决方案3在知道命名元组的存在之前是我的最佳选择。这是我遇到的一个解决方案,即使将每个元组切分会让我感到不舒服