python - 如何在选定的子列表索引处提取、访问和使用列表的所有值?
问题描述
我的问题是我目前正在解决的问题的结果。我需要做的是使用类似的东西:
if myString in list[][1]:
do something
...在这样的结构上:
[
[object1Name, string_1, string_2],
[object2Name, string_1, string_2],
[object3Name, string_1, string_2],
[object4Name, string_1, string_2]
]
我需要检查任何顶级列表项中的 myString 是否等于 string_1 ,并且(稍后)还需要获取满足条件的顶级列表项的索引。
我知道我可以使用带有 if 语句的附加 for 循环来实现它,以循环遍历顶级列表中的所有元素,但我不想避免这种情况。我想要一个最好带有“in”的单线,但如果不可能的话。
我还需要对字典而不是列表做同样的事情(我希望会使用或多或少相同的解决方案)。
解决方案
你应该any(..)
在这里使用:
if any(myString == sublist[1] for sublist in lst):
# ... do something
pass
对于一个可迭代的字典,它是完全一样的,除了键可能是一个非整数,比如:
if any(myString == subdict[some_key] for subdict in lst):
# ... do something
pass
因此,我们在这里迭代sublist
s in lst
。如果对于其中一个sublist
s, myString == sublist[1]
,那么这将成功,否则它将失败。
因此,我们在这里使用生成器。它将从它找到一个项目的any(..)
那一刻起停止True
。然而,这仍然以线性时间运行(最坏的情况)。
编辑:我们可以通过以下方式获得第一个索引:
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]]
推荐阅读
- jinja2 - Jinja2 渲染时修剪 CR
- python - 输出图像不是在不和谐中使用 Pillow 的正确圆形裁剪图像
- python - 这正常吗,pyopenssl 的 get_client_ca_list() 使用 TLS1.3 失败
- sql - 最新时间戳的相对时间(子查询)
- airflow - 如何将 Airflow Metrics 发送到 datadog
- python - 如何在 DRF 中的 listView 中编写原始查询并显示结果
- python - 如何在时间上集成一个功能;即'y'是一个数组,时间(t)的值在1到3000之间变化
- nlp - 如何计算 BERT 中多类分类的所有召回准确率和 f1 度量?
- angular - 打字稿路径导致模块错误
- javascript - 围绕添加其他部分使 javascript 网站动态化