获取特定于其中元素的子列表的索引

时间:2017-09-16 17:25:37

标签: python

如何在另一个列表中获取列表的索引,但是,我想通过在Python中使用“inside”列表中的元素来查找索引?例如,我有

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

现在我想找到第二个列表的索引但是使用了活元素。所以,如果我有一个输入并且我写了活着,它应该给我索引1,其中存储了alive .p

2 个答案:

答案 0 :(得分:1)

修复嵌套列表的语法后,可以使用nextenumerate和列表理解来获取索引:

>>> 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'

答案 1 :(得分: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'])