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()的优点是我们只迭代查找我们正在寻找的内容所需的最少量元素,所以不,它不等于使用列表推导创建一个全新的列表然后返回第一个元素. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |