Equal sets with unequal print and str() representations

Ganesh Gopalakrishnan ganesh at cs.utah.edu
Sun Oct 16 19:52:03 EDT 2011


This probably is known, but a potential pitfall (was, for me) 
nevertheless. I suspect it is due to hash collisions between 's3' and 
's13' in this case? It happens only rarely, depending on the contents of 
the set.

 >>> S1 = {'s8', 's3', 's2', 's0', 's7', 's6', 's4', 's13', 's14'}
S1 = {'s8', 's3', 's2', 's0', 's7', 's6', 's4', 's13', 's14'}
 >>> S2 = {'s8', 's13', 's2', 's0', 's7', 's6', 's4', 's3', 's14'}
S2 = {'s8', 's13', 's2', 's0', 's7', 's6', 's4', 's3', 's14'}
 >>> S1
S1
{'s8', 's13', 's2', 's0', 's7', 's6', 's4', 's3', 's14'}
 >>> S2
S2
{'s8', 's3', 's2', 's0', 's7', 's6', 's4', 's13', 's14'}
 >>> S1==S2
S1==S2
True
 >>> str(S1)
str(S1)
"{'s8', 's13', 's2', 's0', 's7', 's6', 's4', 's3', 's14'}"
 >>> str(S2)
str(S2)
"{'s8', 's3', 's2', 's0', 's7', 's6', 's4', 's13', 's14'}"
 >>> str(S1) == str(S2)
False

--
Ganesh




More information about the Python-list mailing list