我正在抓取一个网站,里面有人的名单。同一个人可以出现多次,而且多个人可以共享同一个姓名:
Tommy Atkins (id:312)
Tommy Atkins (id:183)
Tommy Atkins (id:312)
我想为每个人创建一个对象并丢弃重复的对象。你知道吗
我目前正在使用列表理解来循环所有类实例,看看key
是否已经在使用。有没有更简单的方法?你知道吗
class Object:
def __init__(self, key):
if [object for object in objects if object.key == key]:
raise Exception('key {} already exists'.format(key))
else: self.key = key
objects = []
objects.append(Object(1))
objects.append(Object(1)) # Exception: key 1 already exists
在类中定义^{} 和^{} ,根据
key
的值比较实例,并使用它计算哈希。使用set
代替列表,因为它将以一种有效的方式自动过滤重复项:不要将实例永久地分配给变量,否则它将不会被垃圾收集(请注意,这仅适用于CPython):
输出:
ids的全局存储很好,但是最好利用
set
而不是list
,因为检查i in {}
是O(1),而i in []
是O(N)相关问题 更多 >
编程相关推荐