【问题标题】:Python : tuple inside tuple get child indexPython:元组内的元组获取子索引
【发布时间】:2015-07-22 09:17:16
【问题描述】:

我有这个元组:

STATUS = ((1, 'Standby'), (2, 'Approved'), (3, 'Rejected'))

问题似乎是这是另一个元组中的tuple (x,x,x),其中x(i,'string')。我需要从子元组中获取索引,这可以通过这样做STATUS[0].index('Standby')

但这不是一个好的解决方案,因为我无法直接按名称找到。

所以,我想直接找到索引而不提及我正在寻找的元组的位置。

【问题讨论】:

  • 索引到底是什么意思?你想要元素所在的元组的索引以及内部元组内的元素的索引吗?
  • 那么,你想要像STATUS.deepindex("Standby") 这样的东西来产生(0, 1)
  • 可能相关和/或重复:stackoverflow.com/q/24419487/1639625
  • @tobias_k 完全正确!这就是我想要的。看来我需要创建一个函数来做到这一点,没有开箱即用的函数来做到这一点。

标签: python tuples


【解决方案1】:

为什么不使用列表,然后使用索引?

STATUS = [None, 'Standby', 'Approved', 'Rejected']
STATUS.index('Standby')

返回 1

【讨论】:

  • 我知道列表更容易,但我需要使用元组。如果可能的话,我想知道这是否可以参加这个例子。
  • 然后只需使用 STATUS = (None, 'Standby', 'Approved', 'Rejected')
  • 我无法更改 STATUS 元组,我需要在不修改其结构的情况下使用它,因为它已经在我的应用程序中有一些依赖项
【解决方案2】:

嗯,

默认情况下似乎不存在任何解决方案。所以你需要做一个功能。 使用@tobias_k 的建议,我提出了这个可能的解决方案。

def deepindex(mytuple,myvalue):
   for i in mytuple:
      if i.index(myvalue):
         return i.index(myvalue)

>>> deepindex(STATUS,'Standby')
>>> 1

如果您找到更好的解决方案,请告诉我。 谢谢;)

【讨论】:

    【解决方案3】:

    邮编和地图似乎是个好方法

    zip:聚合来自每个可迭代对象的元素 (*STATUS)(参见 docs

    map: 映射到每个可迭代项并返回结果列表(参见docs

    使用这两个函数:您可以在另一个元组中获取一个元组的索引,正如在这个问题中描述为 STATUS 一样。

    >>> a,b= map(list,zip(*STATUS))
    >>> a[b.index('Standby')]
    >>> 1
    

    【讨论】:

    • 答案应该比代码sn-p更详细。添加一些解释。
    猜你喜欢
    • 2015-08-18
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多