- , IP- . __hash__.
, set "" IP-, , , , IP- .
, Python 2 Python 3.
class IPKey(object):
def __init__(self, s):
self.key = s
self.ip, self.port = s.split(':', 1)
def __eq__(self, other):
return self.ip == other.ip
def __hash__(self):
return hash(self.ip)
def __repr__(self):
return 'IPKey({}:{})'.format(self.ip, self.port)
def get_uniq_worker_ips(workers):
return [k.key for k in set(IPKey(k) for k in workers)]
workers = {
'ip1:port1' : "val",
'ip1:port2' : "val",
'ip2:port1' : "val",
'ip2:port2' : "val",
}
print(get_uniq_worker_ips(workers))
['ip2:port1', 'ip1:port1']
Python 2.7 , set().
def get_uniq_worker_ips(workers):
return [k.key for k in {IPKey(k) for k in workers}]
IPKey.__repr__ , a __repr__, .
, , Jon Clements. .
def get_uniq_worker_ips(workers):
return list({k.partition(':')[0]:k for k in workers}.values())