如何获取具有唯一属性的对象列表

2024-02-24

背景

我有一个list. This list有很多对象。每个对象都有一个id。现在对象有不同的类型。

objects = [Aobject, Bobject, Cobject]

where

>>> Aobject != Bobject
True
>>> Aobject.id ==  Bobject.id
True

Problem

我想要一个list基于的独特对象object.id.

像这样的事情:

set(objects, key=operator.attrgetter('id'))

(这不起作用。但我想要这样的东西)


您可以使用set:

seen = set()
uniqueidlist = []
for obj in mylist:
    if obj.id not in seen:
        seen.add(obj.id)
        uniqueidlist.append(obj)

或者等价地:

seen = set()
uniqueidlist = [seen.add(obj.id) or obj for obj in mylist if obj.id not in seen]

这有效是因为set.add回报None,所以列表推导式中的表达式总是产生obj,但前提是obj.id尚未添加到seen.

该表达式只能计算为None if obj is None;在这种情况下,obj.id会引发异常。以防万一mylist包含None值,将测试更改为if obj and (obj.id not in seen).

请注意,对于每个obj.id,这将保留第一个obj在有那个的列表中obj.id.

Update

或者,您可以使用dict:

seen = {}
for obj in mylist:
    if obj.id not in seen:
        seen[obj.id] = obj
uniqueidlist = list(seen.values())

请注意,对于每个obj.id,这将保留第一个obj在有那个的列表中obj.id。如果您想保留最后一个测试,请删除该测试obj,或使用@Abhijit的回答 https://stackoverflow.com/a/10025086/2326961.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取具有唯一属性的对象列表 的相关文章

  • Python:如果满足条件,则循环遍历一个字典并在新字典中创建键/值对

    我想将一个字典的值与第二个字典的值进行比较 如果值满足特定条件 我想创建第三个字典 其中的键和值对将根据匹配情况而变化 这是一个显示我的问题的人为示例 编辑 对所有返回感到抱歉 但堆栈溢出无法识别单个返回 并且在一行上运行 3 4 行 使代
  • Native TF 与 Keras TF 性能比较

    我使用本机和后端张量流创建了完全相同的网络 但在使用多个不同参数进行了多个小时的测试后 仍然无法弄清楚为什么 keras 优于本机张量流并产生更好 稍微但更好 的结果 Keras 是否实现了不同的权重初始化方法 或者执行除 tf train
  • 如何使用 django Rest 框架保存多对多字段对象

    我有博客 发布 标签三个模型 在博客模型中 我将字段 postedin 作为发布模型的外键 将 标签 作为标签模型的许多字段 模型 py class Posted models Model name models CharField Pos
  • 我想将对象列表添加到 firestore 文档中,-flutter

    我想将对象列表添加到 firestore 文档 我定义了产品数据模型 我还有类别数据模型 我想将类别列表添加到 firestore 中的产品文档中 我将类别添加到临时列表 然后将值放入product categories 产品 类别 类别t
  • 在 Python 中倾斜数组

    我有一个 2D 数组 我将使用它保存为灰度图像scipy misc toimage 在此之前 我想将图像倾斜给定角度 像这样进行插值scipy ndimage interpolation rotate 上图只是为了说明倾斜过程 我知道我必须
  • seaborn 箱线图的子图

    我有一个像这样的数据框 import seaborn as sns import pandas as pd pylab inline df pd DataFrame a one one two two one two one one one
  • 统计Sweep算子的Python实现

    我正在学习一些用书中缺失的数据进行统计的技术 缺失数据的统计分析作者 利特尔和鲁宾 对于处理单调无响应数据来说 一个特别有用的函数是扫频操作员 详情见第 148 151 页 我知道 R 模块gmm有swp函数可以做到这一点 但我想知道是否有
  • 如何在 Django 中像应用程序一样从配置中注册 Flask 蓝图?

    如何从我的配置中注册 Flask 蓝图 就像 Django 中的应用程序一样 我想在配置文件中定义蓝图 它将自动注册 config py BLUEPRINTS news files 实际上我一直在一个暂定名为的项目中勾勒出类似的东西臀部口袋
  • Python3 - 如何将字符串转换为十六进制

    我正在尝试将字符串逐个字符转换为十六进制 但我无法在Python3中弄清楚它 在较旧的 python 版本中 我的以下内容有效 test This is a test for c in range 0 len test print 0x s
  • 将具有多个时区的 pandas 列转换为单个时区

    Problem 我在 pandas DataFrame 中有一个列 其中包含带有时区的时间戳 此列中有两个不同的时区 我需要确保只有一个 这是该列末尾的输出 260003 2019 05 21 12 00 00 06 00 260004 2
  • 如何在 FastAPI Swagger API 中按方法类型对方法进行排序?

    如何在 FastAPI Swagger 自动文档中设置 API 方法的排序顺序 我希望所有方法按类型分组 GET POST PUT DELETE 这个答案 https stackoverflow com questions 24951268
  • 如果任何单元测试失败,如何使 Python 的覆盖率工具失败?

    我想使用 shell 脚本来确保我的单元测试通过and我的代码有足够的测试覆盖率 我只想运行我的测试代码once 我希望我可以通过coverage https coverage readthedocs io 工具和单次运行的工具 如果一项或
  • 如何在 Haskell 中向右或向左移动列表的 1 个元素?

    嗨 我一直在寻找答案 但找不到 假设我们有一个像这样的列表 1 10 4 5 3 我怎样才能将 5 向左移动 使这个列表变成 1 10 5 4 3 我尝试过了swapElementsAt通过找到该元素的索引 但它看起来非常不足 swapEl
  • Python:Factory Boy 生成对象创建时指定长度的列表

    我正在尝试使用 Factoryboy 在创建时指定长度的对象中创建一个列表 我可以创建列表 但由于提供的长度 大小的惰性性质 每次尝试创建具有指定长度的列表都会导致问题 这是我到目前为止所拥有的 class FooFactory facto
  • 获取列的 [0, x] 元素的最小值

    我需要计算一列 其中值是对其他列进行矢量化运算的结果 df new col df col1 min 0 df col2 然而 事实证明我不能像上面的语法一样使用 min 那么 获得 pandas 列的零和给定值之间的最小值的正确方法是什么
  • 使用 Celery 通过 Gevent 进行实时、同步的外部 API 查询

    我正在开发一个 Web 应用程序 该应用程序将接收用户的请求 并且必须调用许多外部 API 来编写对该请求的答案 这可以直接从主 Web 线程使用 gevent 之类的东西来扇出请求来完成 或者 我在想 我可以将传入的请求放入队列中 并使用
  • 如何在 Windows 7 中使用 Python 廉价地创建非常大的文件? [复制]

    这个问题在这里已经有答案了 可能的重复 在Windows系统上快速创建大文件 https stackoverflow com questions 982659 quickly create large file on a windows s
  • 如何单独捕获这些异常?

    我正在编写一个与 Quickbooks 交互的 Python 程序 连接到 Quickbooks 时 根据问题的不同 我可能会遇到以下两个常见异常之一 pywintypes com error 2147352567 Exception oc
  • 如何将 Django 数据库中的模板标签解释/渲染为 HTML

    我正在尝试添加带有来自 Django 管理站点的图像的帖子 但安全 自动转义关闭过滤器无法解释 Django 的模板标签 My input and page look like 复制图像地址 给出http 127 0 0 1 8000 7B
  • 如何使用多阶段构建减小 python (docker) 图像大小?

    我正在寻找一种使用 python 和 Dockerfile 创建多阶段构建的方法 例如 使用以下图像 第一张图片 安装所有编译时要求 并安装所有需要的 python 模块 第二张图片 将所有已编译 构建的包从第一个映像复制到第二个映像 而不

随机推荐

  • PHP bcompiler 编码的代码有多安全?

    我很感兴趣是否有人确切知道 PHP 的有效性 安全性 受保护程度b编译器 http www php net manual en intro bcompiler php反对逆向工程 简介页面做出了大胆的声明 在代码保护方面 可以肯定地说 如果
  • 如何在受 AWS Linux AMI 限制的情况下,将 SoX 二进制文件打包为 NodeJS AWS Lambda 函数的 MP3 支持?

    过去三个月我一直在研究这个问题 但完全陷入困境 我正在尝试打包我的 NodeJS AWS Lambda 函数 该函数将使用SoX http sox sourceforge net以及将音频文件转换为 MP3 的依赖项 我可以按照引用的说明让
  • Grails 2.3.7 删除 itext 2.0.8 jar

    我尝试将应用程序从 grails 2 2 4 更新到 2 3 7 但 iText 依赖项存在问题 执行 grails 资源依赖项显示我有 2 个用于 iText 的 jar org grails grails docs 2 3 7 org
  • 如何读取haskell类型签名?

    所以我把这个声明放在我的ghci上 jkl x f y f map y x 我把这个放回去了 jkl Num b gt b gt b gt t gt b gt t 但当我读到它时我很困惑 根据我的理解 jkl 是 num 类型 它采用 b
  • 如何用 gulp-rev 的输出替换 index.html 中列出的文件名?

    我在用着gulp rev https www npmjs org package gulp rev 构建我可以设置的静态文件永不过期 http developer yahoo com performance rules html expir
  • 使用服务帐户访问 Google Analytics API

    我可以使用客户端应用程序中的服务帐户访问 Google Analytics 数据吗 如果没有 是否有其他方法可以达到相同的结果 必须完全是客户端的 并且不能要求用户进行身份验证 因此需要使用服务帐户 是的 你可以在https code go
  • 用于 DOM 的 Gecko API

    Gecko 是否公开了直接使用其 DOM 的 API 我正在寻找像 HtmlElement 这样的类 可用于构建 遍历 HTML 内容树 我正在尝试将 Gecko 作为桌面应用程序中的 Web 浏览器控件托管 并且更喜欢直接 API 而不是
  • NuGet Pack:忽略默认包含

    这与我通常读到的问题相反 即人们试图获取 NuGet 包中包含的文件 我试图stop文件被自动包含 我正在创建一个预编译的 MVC 视图模板库 使用 RazorGenerator Mvc less文件和 JavaScript 来根据需要支持
  • 如何为 Flutter 中禁用的文本表单字段标签设置颜色主题?

    我想在我的 Flutter 应用程序中禁用文本字段的标签上应用一个主题 因为我现在的灰色很难阅读 我想将其应用到我的整个应用程序 所以我想使用主题 但是 我没有找到任何解决方案可以让我自定义标签的文本样式仅当文本表单字段被禁用时 如何在 F
  • Thunderbird 议程本机系统通知? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 几周来我一直在寻找这个问题的答案 我想我可能会直接问这个问题 我在 Windows 10 上使用 Thunderbird 102 6
  • 使用 PHP 5.5 在 Amazon EC2 上安装 pdo_mysql

    我创建了一个 Amazon Linux AMI 2013 09 02 服务器并安装了以下内容 yum install php55 php55 mbstring php55 soap php55 gd php55 mcrypt php55 p
  • 在 Procfile 中启动多个工作进程(开发环境与 Heroku)

    我有一个简单的 Procfile 内容如下 web bundle exec rails server thin p PORT worker bundle exec rake jobs work 在 Heroku 上 这将启动 N 个工作任务
  • Java HashMap 数组大小

    我正在阅读Java 8 HashMap的实现细节 谁能告诉我为什么Java HashMap初始数组大小具体是16 16岁有什么特别之处 为什么总是两个人的力量 谢谢 2 的幂之所以到处出现 是因为当用二进制表示数字时 就像在电路中一样 2
  • 我们如何为 pom.xml 创建一个 build.gradle 等效文件来构建和部署 AEM 代码?

    我正在尝试创建一个构建 gradle文件 例如完整的 pom xmlAEM Maven 原型 https github com Adobe Marketing Cloud aem project archetype or 懒骨头模板 htt
  • 将 id 分开并存储在两个不同的数组中

    NSString string vlaue Highlight 1234 1235 1236 1237 Issuer 100 101 102 103 我需要将 1234 1235 1236 1237 存储在一个数组中 100 101 102
  • 自动激活Maven中的父插件

    是否可以在父 POM 中定义一个已停用的插件 并且当子项目继承此插件时 它会自动激活 我猜您想在父 pom 中配置该插件 但仅在继承的项目中使用它 Maven 有一个专门的部分 在pluginManagement 中配置你的插件 但在你需要
  • 超线程/SMT 是一个有缺陷的概念吗?

    HT SMT 背后的主要思想是 当一个线程停止时 同一核心上的另一个线程可以选择该核心的其余空闲时间并透明地与之一起运行 2013 年 英特尔放弃了 SMT 转而采用乱序执行 Silvermont 处理器核心 因为他们发现这可以提供更好的性
  • 如何在JSP中访问请求属性?

    目前我使用 and then 但是我想知道是否可以使用 EL 或 JSTL 而不是使用 scriptlet 来完成同样的操作 EL表达式 requestScope Error Message JSP EL 中有几个隐式对象 看表达语言 ht
  • 如何使用 Javascript 截断/切片/修剪字符串中的最后一个字符?

    我有一根绳子 12345 00 我希望它返回12345 0 我看过trim 但看起来它只是修剪空白并且slice我不明白这是如何运作的 有什么建议么 您可以使用子串 https developer mozilla org en US doc
  • 如何获取具有唯一属性的对象列表

    背景 我有一个list This list有很多对象 每个对象都有一个id 现在对象有不同的类型 objects Aobject Bobject Cobject where gt gt gt Aobject Bobject True gt