我有一个元组列表,例如
>>> 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:搜索元组列表的更多相关文章

  1. XCode 3.2 Ruby和Python模板

    在xcode3.2下,我的ObjectiveCPython/Ruby项目仍然可以打开更新和编译,但是你无法创建新项目.鉴于xcode3.2中缺少ruby和python的所有痕迹(即创建项目并添加新的ruby/python文件),是否有一种简单的方法可以再次安装模板?我发现了一些关于将它们复制到某个文件夹的信息,但我似乎无法让它工作,我怀疑文件夹的位置已经改变为3.2.解决方法3.2中的应用程序模板

  2. xcode – XCTest一个元组

    我正在尝试构建一个单元测试:但是Xcode给了我一个错误:无法使用类型的参数列表调用’XCTAssertEqual’是否有不同的方法来测试元组而不提取其成员并单独测试?解决方法XCTAssertEqual要求传递给它的两个参数是Equatable,您可以从方法签名中看到它们.注意,expression1返回T?,T必须是Equatable:但是Swifttuplesaren’tEquatable,所以你不能将它们与XCTAssertEqual一起使用.元组确实有一个==方法–它们只是不符合协议–所以你可以

  3. ios – 在NSUserDefaults中保存一个元组

    我正在使用一个元组来存储这样的东西.现在我想将它保存在NSUserDefaults中.但是我收到以下错误.类型'’不符合协议’AnyObject’我该如何解决这个问题?

  4. 一 Swift学习之基础部分

    **一Swift学习之基础部分————–借鉴老码团队翻译组-Tyrion**//1.1常量和变量letsum=0//声明常量,值不可修改varnumber=1//声明变量,值可修改varx=0.0,y=1.0,z=2.0//在一行声明多个常量或变量用逗号隔开//1.2类型标注//声明常量或变量时可以加上类型标注,表示这个常量或变量存储的类型,但是如果你没有添加类型,而是赋了初始值,swift会自己推断类型letnum:Int=0varstr:String?Swift提供了两种有符号浮点数类型:Double

  5. Swift语法基础:10 - Swift的布尔值, 元组, 可选, 断言

    3.一个可选值现在是nil,但是后面的代码运行需要一个非nil值。

  6. Swift教程 第一章 基础部分

    Swift是iOS和OSX应用开发的一门新语言,Swift的类型是在C和Object-C的基础上提出来的。Int是整型,Double和Float是浮点型,Bool是布尔型,String是字符串。Swift还有两个常用的集合类型:Array数组和Dictionary字典。除了我们熟悉的类型,Swift还增加了Object-C中没有的类型,比如元组。Swift还增加了可选类型,用于处理值缺失的情况。常量和变量必须在使用前声明,用let来声明常量,用var来声明变量。

  7. Swift教程07-基本数据类型(三)元组类型tuple

    元组乃何方神圣?

  8. swift语言-元组

    可以使用隐氏类型推断,也可以有类型标注。例子如下:2元组数据的访问1.使用下标访问,这种访问方式类似于获得数组元素。下标也是从0开始的。用一组变量组和元组值进行对应。让键值参数在元组的圆括号内。

  9. Swift学习:3.元祖

    元组元组把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型。下面这个例子中,是一个描述HTTP状态码的元组。HTTP状态码是当你请求网页的时候web服务器返回的一个特殊值。如果你请求的网页不存在就会返回一个404NotFound状态码。如果你的数据结构并不是临时使用,请使用类或者结构体而不是元组。

  10. Swift学习—元组类型

    知识点:元组数据中的元素可以有名称也可以没有名称元组数据中的元素可以为空元素访问可以通过元素名称或者下标声明成var的元组数据中的元素可以被改变可以指定元素的类型可以用多个变量接收元组数据可以将元素分别赋值给多个变量可以用下划线_忽略某个元素的值,从而取出其他的元素示例代码:

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部