Python 如何在选定的子列表索引中提取、访问和使用列表的所有值?

Python 如何在选定的子列表索引中提取、访问和使用列表的所有值?,python,list,dictionary,Python,List,Dictionary,我的问题是我目前正在与之斗争的问题的结果。我需要做的是使用这样的东西: [ [object1Name, string_1, string_2], [object2Name, string_1, string_2], [object3Name, string_1, string_2], [object4Name, string_1, string_2] ] 如果列表[][1]中的myString: 做点什么 …在这样的结构上: [ [object1Name, string_1, string_2

我的问题是我目前正在与之斗争的问题的结果。我需要做的是使用这样的东西:

[
[object1Name, string_1, string_2],
[object2Name, string_1, string_2],
[object3Name, string_1, string_2],
[object4Name, string_1, string_2]
]
如果列表[][1]中的myString: 做点什么 …在这样的结构上:

[
[object1Name, string_1, string_2],
[object2Name, string_1, string_2],
[object3Name, string_1, string_2],
[object4Name, string_1, string_2]
]
我需要检查myString是否等于任何顶级列表项中的string_1,然后还要获取满足条件的顶级列表项的索引

我知道我可以使用附加的for循环和if语句来实现它,以循环遍历顶级列表中的所有元素,但我不想避免这种情况。我想订一条一班轮的,最好是带in的,但如果不可能的话,其他的什么都可以

我还需要为字典而不是列表做完全相同的事情,我希望它会使用或多或少相同的解决方案。

您应该使用任何。。在这里:

对于iterable字典,它完全相同,只是键可能是非整数,如:

if any(myString == subdict[some_key] for subdict in lst):
    # ... do something
    pass
因此,我们在这里迭代lst中的子列表。如果对于其中一个子列表,myString==sublist[1],则此操作将成功,否则将失败

因此,我们这里使用发电机。任何。。将从找到正确项的那一刻起停止。然而,这仍然在线性时间最坏情况下运行

编辑:我们可以通过以下方式获得第一个索引:

idx = next((idx for idx, sublist in enumerate(lst) if myString == sublist[1]), None)
如果不存在此类索引,则返回None

或者我们可以通过列表理解检索所有索引:

idcs = [idx for idx, sublist in enumerate(lst) if myString == sublist[1]]

获取满足这种条件的顶级列表项的索引怎么样?使用精确的代码索引部分,我的解释器必须被生成器表达式阻塞,必须用括号括起来。我使用了您的代码1到1,只是分别用我的列表和字符串替换了lst和myString。@NecXelos:确实正确,您应该在生成器中添加括号。第二个解决方案idcs one工作正常。上面提到的错误仅在第一个解决方案idx one中发生。@NecXelos:是的,但通过添加括号,如编辑的答案中所示,应该解决此问题。