栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Python删除对象列表中的重复项

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Python删除对象列表中的重复项

set(list_of_objects)
,如果你知道一个重复的是什么,只会删除重复的,也就是说,你需要定义一个对象的唯一性。

为此,您需要使对象可哈希化。您需要同时定义

__hash__
__eq__
方法,方法如下:

http://docs.python.org/glossary.html#term-
hashable

不过,您可能只需要定义

__eq__
方法。

编辑 :如何实现该

__eq__
方法:

正如我所提到的,您需要知道对象的唯一性定义。假设我们有一本书,其属性author_name和title组合在一起是唯一的(因此,我们可以有很多书由Stephen
King撰写,许多书名为The Shining,但只有一本书由Stephen King命名为The Shining),然后实现如下:

def __eq__(self, other):    return self.author_name==other.author_nameand self.title==other.title

同样,这就是我有时实现

__hash__
方法的方式:

def __hash__(self):    return hash(('title', self.title,      'author_name', self.author_name))

您可以检查是否创建了两本具有相同作者和标题的书籍的列表,这些书籍对象将
是相同的(带

is
操作符)和相等的(带
==
操作符)。同样,
set()
使用时,它将删除一本书。

编辑
:这是我的一个老anwser,但我现在才注意到它有它在最后一段删除线更正错误:与相同的对象

hash()
不会放弃
True
的时候相比
is
。但是,如果打算将对象用作集合的元素或用作字典中的键,则使用对象的哈希性。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/415297.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号