1
如何获得另一个列表中的列表的索引,但是,我想通过使用Python中的“内部”列表的元素来查找索引?例如我有获取特定于其中元素的子列表的索引
[["dead"["brain.txt"],["alive",["grail.txt"]].
现在我想找到第二个列表的索引,但使用活着的元素。所以,如果我有一个输入和我写的还活着,就应该给我的指标1,其中活着stored.p
如何获得另一个列表中的列表的索引,但是,我想通过使用Python中的“内部”列表的元素来查找索引?例如我有获取特定于其中元素的子列表的索引
[["dead"["brain.txt"],["alive",["grail.txt"]].
现在我想找到第二个列表的索引,但使用活着的元素。所以,如果我有一个输入和我写的还活着,就应该给我的指标1,其中活着stored.p
固定的嵌套列表的语法后,这里的方式与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'
如何使用类呢?
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'])
使用'for'循环? –
似乎你的“[”和“]”不匹配。请更正 –
一般来说,'list's应该是同类的。在你知道自己在做什么之前,如果你混合了这种类型,你应该总是转向不同的数据结构。 – o11c