Ben nesnelerin belirledik:Nesneler için kümede çiftler nasıl kaldırılır?
class Test(object):
def __init__(self):
self.i = random.randint(1,10)
res = set()
for i in range(0,1000):
res.add(Test())
print len(res) = 1000
Nasıl nesnelerin kümesinden çiftleri kaldırmak için?
class Test(object):
def __init__(self, i):
self.i = i
# self.i = random.randint(1,10)
# self.j = random.randint(1,20)
def __keys(self):
t =()
for key in self.__dict__:
t = t + (self.__dict__[key],)
return t
def __eq__(self, other):
return isinstance(other, Test) and self.__keys() == other.__keys()
def __hash__(self):
return hash(self.__keys())
res = set()
res.add(Test(2))
...
res.add(Test(8))
sonuç: [2,8,3,4,5,6,7]
ama nasıl kurtarmak için cevaplar
sayesinde iştir? Destek siparişini ayarlar. Örneğin bunun yerine liste kullanabilir miyim?
Teşekkürler, ama birkaç tane var mı? – Bdfy
Eşsiz bir tamsayı karması üretmek için bunları karıştırın (buitlin 'karma 'işlevini tamsayı olmayan özniteliklerde kullanın ve'^birlikte bunları birlikte kullanın) ve eşitliği sizin için anlamlı bir şekilde tanımlayın. Bu iki nesnenin, kopyalarını değerlendirmek için ortak olması gereken şey nedir? Bunu __eq__'de ifade edin. –
Eşitliği ve hashı tanımlamanın en kolay yolu, nesnenize izomorfik olan bir tuple bulmak ve sonra tuple '__hash__' ve' __eq__' için 'collections.namedtuple' (eğer varsa) kullanarak veya tuples oluşturarak talep üzerine: 'def __hash __ (self): dönüş hash ((self.x, self.y, self.z))'. – delnan