如何使用 lambda 获取列表中过滤项的索引?

2024-03-11

我有一份水果清单[{'name': 'apple', 'qty': 233}, {'name': 'orange', 'qty': '441'}]

当我过滤列表时orange使用拉姆达,list(filter(lambda x: x['name']=='orange', fruits)),我得到了正确的字典,但我无法获取字典的索引。索引应该是 1 而不是 0。

如何获得过滤项目的正确索引?


您可以使用列表理解和enumerate() https://docs.python.org/3/library/functions.html?highlight=enumerate#enumerate反而:

>>> fruits = [{'name': 'apple', 'qty': 233}, {'name': 'orange', 'qty': '441'}]
>>> [(idx, fruit) for idx, fruit in enumerate(fruits) if fruit['name'] == 'orange']
[(1, {'name': 'orange', 'qty': '441'})]

就像@ChrisRands 在评论中发布的那样,您也可以使用filter通过为您创建一个枚举对象fruits list:

>>> list(filter(lambda fruit: fruit[1]['name'] == 'orange', enumerate(fruits)))
[(1, {'name': 'orange', 'qty': '441'})]
>>> 

以下是这两种方法的一些时序:

>>> setup = \
      "fruits = [{'name': 'apple', 'qty': 233}, {'name': 'orange', 'qty': '441'}]"
>>> listcomp = \
     "[(idx, fruit) for idx, fruit in enumerate(fruits) if fruit['name'] == 'orange']"
>>> filter_lambda = \
     "list(filter(lambda fruit: fruit[1]['name'] == 'orange', enumerate(fruits)))"
>>> 
>>> timeit(setup=setup, stmt=listcomp)
1.0297133629997006
>>> timeit(setup=setup, stmt=filter_lambda)
1.6447856079998928
>>> 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 lambda 获取列表中过滤项的索引? 的相关文章

随机推荐

  • http-proxy-middleware 中的 60 秒超时

    我在使用时看到 60 秒超时chimurai http proxy middleware in Create React App我不明白它是从哪里来的 我正在端口 5000 上运行 API 并进行配置setupProxy js as con
  • 在 matplotlib 中自定义 x 轴

    In the figure below each unit in the x axis represents a 10mins interval I would like to customize the labels of x axis
  • 如何在午夜更新应用程序小部件?

    我的应用程序有一个小部件 显示今天的日期 需要在午夜更新 该小部件在清单中定义为
  • 为什么使用 UIPanGestureRecognizer 移动对象时会出现延迟?

    我要搬家了UIView对象使用UIPanGestureRecognizer 我在屏幕上拖动手指的次数 我向同一方向移动视图的次数 仅在 X 方向上 向左或向右 Y 方向不变 它工作正常 但是 非常明显 delay 这是处理的方法UIPanG
  • 重命名 IAM 角色

    我在创建 IAM 角色以允许 lambda 函数访问 cloudwatch 日志并创建 EC2 卷快照时犯了一个拼写错误 有没有办法重命名角色 无论是使用控制台还是 AWS CLI 创建角色后 您无法编辑 IAM 角色 这在多个地方都提到过
  • 将 FASTA 文件中的多个序列添加到 python 中的列表中

    我正在尝试组织具有多个序列的文件 在此过程中 我尝试将名称添加到列表中 并将序列添加到与名称列表并行的单独列表中 我弄清楚了如何将名称添加到列表中 但我不知道如何将其后面的序列添加到单独的列表中 我尝试将序列行附加到空字符串中 但它将所有序
  • C# 如何判断 DVD 驱动器托盘是否打开?

    我有一个用 C 编写的 DVD 读取和刻录应用程序 我希望能够检测空驱动器 无磁盘 和打开驱动器之间的区别 编辑 经过更多谷歌搜索后 我认为更好的问题描述是 我想访问驱动器托盘状态 打开或关闭 我可以用 ManagementObjectSe
  • ASP.NET MVC5/IIS Express 无法调试 - 代码未运行

    我启动 VS2013 VB Net MVC5 Web 应用程序 在 HomeController About 方法中设置断点并运行 开始调试 导航到 About 页面并接收消息 Code not running The current Th
  • gnu make“删除中间文件”

    我有以下规则 define compile c ECHO CC lt Q CC CFLAGS c MD o lt The following fixes the dependency file See http make paulandle
  • 从原始数据的字节数组中获取缓冲图像

    我正在使用JNA 我从我的 C 方法中获取原始数据的字节数组 现在我陷入了如何使用这个原始数据字节数组在java中获取缓冲图像的困境 我尝试了一些方法来使其成为 tiff 图像 但我没有取得成功 这是我到目前为止尝试过的代码 这里我的字节数
  • 将子视图延迟加载到非分页 UIScrollView 中

    我正在尝试实现一个类似幻灯片的 UIScrollView 它将填充目录页面的缩略图 选择缩略图将导致主 UIScrollView 移动到所选页面 目录可能包含 100 200 页 我只想在需要时才延迟加载它们 我已经在启用分页的 UIScr
  • 创建用于 XML 导出的多维对象

    我正在导入一个包含大量发票数据的 csv 文件 该数据需要根据供应商 ID 分组在一起 以显示每个供应商的标题以及该供应商 ID 的所有发票的总和 然后在其下方显示每张单独的发票 该项目的目标是导入 CSV 向用户显示数据 允许通过选择框更
  • Javascript 在选中的复选框上克隆此 div,在未选中的情况下删除此 div

    选中该复选框后 克隆正确的 div 并将其显示在示例中 div div 当取消选中该复选框时 删除克隆 并伴随localStorage 有人可以帮我解决这个问题吗 function onClickAvGamesCheckBox var ar
  • 使用 Blobstore API 和 Images API 直接从 GAE 中的 GCS 提供图像

    关于 Blobstore 和 Google Cloud Storage GCS 的许多问题和答案已有两三年历史 而这些年情况发生了巨大变化 GCS 不再是一项独立的服务 这是融合的 https developers google com s
  • ShortDynamicLink 不生成动态链接的短链接

    创建动态链接 DynamicLink dynamicLink FirebaseDynamicLinks getInstance createDynamicLink setLink Uri parse http shaharapp in se
  • 为什么java.lang.Object中的finalize()方法是“受保护的”?

    出于好奇 为什么是finalize 方法的访问修饰符被设为protected 为什么不能是public 有人可以向我解释一下这背后的具体原因吗 另外 我也了解到finalize 方法仅被调用一次 如果我在程序内部调用它两次 会发生什么 垃圾
  • Apple 是否为 SIRI 提供 API?

    Apple 是否有可能为 Siri 提供 API 如果我可以一边喝着咖啡一边说 User 嘿 Siri 你能打开愤怒吗 鸟类 4 级并为我扔第一只鸟 确保你至少打到一只绿猪 否则它就会从你的薪水中扣除 Siri 是的 当然 我会为你做的 这
  • Visual Studio Code,如何复制文件名

    在 Visual Studio 代码中 它有以下命令Copy Path and Copy Relative Path Ctrl Shift p gt 文件 复制活动文件的路径 有没有办法可以复制活动文件名而不是整个路径 如果没有办法复制活动
  • 更改 Julia 中的包目录

    我想更改 Julia 中的包目录 默认为 julia v0 4 我想要move it to opt julia v0 4 理想情况下 我想移动已安装的软件包 julia v0 4到新地点 但如果这是不可能的 我可以重新安装它们 我需要做什么
  • 如何使用 lambda 获取列表中过滤项的索引?

    我有一份水果清单 name apple qty 233 name orange qty 441 当我过滤列表时orange使用拉姆达 list filter lambda x x name orange fruits 我得到了正确的字典 但