加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python:搜索元组列表

发布时间:2020-12-16 23:30:07 所属栏目:Python 来源:网络整理
导读:我有一个元组列表,例如 l = [ ("a",1),("b",2),("c",3) ] 我可以假设元素是独一无二的.现在我想获得该元组的第一个元素,其第二个元素是2(在这个例子中是’b’).首次尝试是: [ x for x,y in l if y == 2 ][0]'b' 这看起来有些麻烦,因为这会创建第二个列表,仅
我有一个元组列表,例如
>>> l = [ ("a",1),("b",2),("c",3) ]

我可以假设元素是独一无二的.现在我想获得该元组的第一个元素,其第二个元素是2(在这个例子中是’b’).首次尝试是:

>>> [ x for x,y in l if y == 2 ][0]
'b'

这看起来有些麻烦,因为这会创建第二个列表,仅用于索引第0个元素.另一种方法是反转给定列表中的所有元组l并构建一??个字典,然后索引该字典:

>>> dict([ (y,x) for x,y in l ])[2]
'b'

考虑到反转列表和创建字典所涉及的数据混乱量,这似乎更加尴尬.最后,最简单但也许最快的方法是简单地迭代列表:

>>> def get(l) :
...     for x,y in l :
...         if y == 2 : 
...             return x
...     assert not "Should not happen."
... 
>>> get(l)
'b'

我的问题是:有没有更好,更pythonic的方式来搜索这个列表?

解决方法

试试这个:
next(x for x in l if x[1] == 2)[0]

使用next()的优点是我们只迭代查找我们正在寻找的内容所需的最少量元素,所以不,它不等于使用列表推导创建一个全新的列表然后返回第一个元素.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读