Get item from set

Terry Reedy tjreedy at udel.edu
Mon Apr 27 20:48:25 CEST 2009


Johannes Bauer wrote:
> Hi group,
> 
> I have a very simple about sets. This is a minimal example:
> 
> #!/usr/bin/python
> class x():
> 	def __init__(self, y):
> 		self.__y = y
> 	def __eq__(self, other):
> 		return self.__y == other.__y
> 	def __hash__(self):
> 		return hash(self.__y)
> 
> a = x("foo")
> s = set([x("bar"), x("moo"), a])
> z = x("foo")
> print("z = ", z)
> print(s)
> for i in s:
> 	print(i, i == a, i is a, i == z, i is z)
> 
> The problem is: two instances of x() are equal (__eq__ returns true),
> but they are not identical. I have an equal element ("z"), but want to
> get the *actual* element ("a") in the set. I.d. in the above example,
> i'd like something like:
> 
> print(s.getelement(z) is a)
> True
> 
> Is there something like the "getelement" function? How can I do what I want?

No. but you pratically wrote it: in your code, when i == z, then i is 
the element you want.

def getelement(sset, item):
   for i in sset:
     if i == item: return i

The only use for this is see, though, is getting the representative of 
an equivalence class from any member thereof.

tjr




More information about the Python-list mailing list