获取包含元组的列表的索引,其中元组的第一个元素与模式匹配

Posted

技术标签:

【中文标题】获取包含元组的列表的索引,其中元组的第一个元素与模式匹配【英文标题】:Get index of a list with tuples in which the first element of the tuple matches pattern 【发布时间】:2021-08-21 08:20:25 【问题描述】:

我有一个元组列表:

    countries = [('Netherlands','31'),
                 ('US','1'),
                 ('Brazil','55'),
                 ('Russia','7')]

现在,我想根据元组中的第一项找到列表的索引。

我尝试过countries.index('Brazil'),我希望输出为2。但相反,这会返回一个 ValueError:

ValueError: 'Brazil' is not in list

我知道我可以将此列表转换为 pd DataFrame,然后在第一列中搜索模式匹配。但是,我怀疑有更快的方法来做到这一点。

【问题讨论】:

【参考方案1】:

您可以使用enumerate() 查找您的索引:

试试:

idx = next(i for i, (v, *_) in enumerate(countries) if v == "Brazil")
print(idx)

打印:

2

【讨论】:

谢谢!似乎这段代码返回了第一个索引的索引,这足以解决我的问题。只是基于我自己的好奇心:您是否知道在适用时会返回多个索引的替代方案? @Emil 你可以使用列表理解,例如:indices = [i for i, (v, *_) in enumerate(countries) if v == "Brazil"]

以上是关于获取包含元组的列表的索引,其中元组的第一个元素与模式匹配的主要内容,如果未能解决你的问题,请参考以下文章

关于Python中元组的问题

提取管道中元组的第二个元素

如何访问列表中元组的第一个元素?

Python中的元组(Tuple)

当元组是字典的值时仅检索元组的一个元素

列表和元组的一些笔记