2017-09-16 81 views
1

如何获得另一个列表中的列表的索引,但是,我想通过使用Python中的“内部”列表的元素来查找索引?例如我有获取特定于其中元素的子列表的索引

[["dead"["brain.txt"],["alive",["grail.txt"]]. 

现在我想找到第二个列表的索引,但使用活着的元素。所以,如果我有一个输入和我写的还活着,就应该给我的指标1,其中活着stored.p

+0

使用'for'循环? –

+1

似乎你的“[”和“]”不匹配。请更正 –

+0

一般来说,'list's应该是同类的。在你知道自己在做什么之前,如果你混合了这种类型,你应该总是转向不同的数据结构。 – o11c

回答

1

固定的嵌套列表的语法后,这里的方式与next拿到指标,enumerate和列表理解:

>>> data = [["dead", ["brain.txt"]],["alive",["grail.txt"]]] 
>>> next(i for i, v in enumerate(data) if 'alive' in v) 
1 
>>> next(i for i, v in enumerate(data) if 'dead' in v) 
0 
>>> next(i for i, v in enumerate(data) if 'nothere' in v) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
StopIteration 

你可以,如果没有索引被发现定义默认值:

>>> next((i for i, v in enumerate(data) if 'nothere' in v), 'NotFound') 
'NotFound' 
0

如何使用类呢?

lst = [["dead", ["brain.txt"]], ["alive", ["grail.txt"]]] 


class MyList(object): 
    def __init__(self, lst): 
     self._lst = lst 

    def __getitem__(self, item): 
     for idx, values in enumerate(self._lst): 
      if item in values: 
       return idx 
     return KeyError() 


print(MyList(lst)['alive']) 
相关问题