【发布时间】:2015-06-08 03:28:16
【问题描述】:
我有一个元组列表,例如
>>> 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'
我的问题是:有没有更好、更 Python 的方式来搜索这个列表?
【问题讨论】:
标签: list search python-3.x tuples