我在解析一棵树的时候建立了一个高层对象的大列表。但是,在这一步之后,我必须从列表中删除重复项,我发现在python2中这个新步骤非常慢(这是可以接受的,但是在python3中仍然有点慢)。但是我知道不同的物体实际上有不同的id。为此,我通过以下步骤设法获得了一个速度更快的代码:
key=id
选项对列表排序因此,我有了一个可以正常运行的代码,但是我想知道是否可以在Python中更直接地实现这个任务。在
示例。让我们构建两个相同的对象,它们具有相同的值,但具有不同的id(例如,为了依赖标准库,我将使用一个fractions.Fraction
):
from fractions import Fraction
a = Fraction(1,3)
b = Fraction(1,3)
现在,如果我试图通过使用pythonic list(set(...))
来实现我想要的结果,我得到的结果是错误的,因为{
我现在的问题是:用id而不是用value删除重复项,最具python、最可靠、最快捷的方法是什么?列表的顺序并不重要,是否需要更改。
请小心,因为使用
id
进行区分可能会失败,因为python可能会优化存储的一些基本类型:收益率
^{pr2}$无论如何,如果您想处理标准对象(即使是非散列对象),您可以将它们存储在字典中,并将它们
id
作为键。在分数示例:
结果:
您应该重写^{} 方法,使其依赖于对象} 方法。在
id
,而不是其值。但是请注意,您的对象也必须是散列的,所以您也应该定义一个适当的^{演示:
^{pr2}$相关问题 更多 >
编程相关推荐