Python:搜索元组列表

前端之家收集整理的这篇文章主要介绍了Python:搜索元组列表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个元组列表,例如
>>> 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()的优点是我们只迭代查找我们正在寻找的内容所需的最少量元素,所以不,它不等于使用列表推导创建一个全新的列表然后返回第一个元素.

猜你在找的Python相关文章