Ganesh Gopalakrishnan <gan...@cs.utah.edu> writes: > 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?
What is the actual problem? What behaviour is occurring that doesn't match your expectation? > >>> 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 Right, that's all correct (though I don't know why some of your expressions are being shown twice). A deliberate property of a set is that its items are unordered. <URL:http://docs.python.org/library/stdtypes.html#set> Since sets are unordered, the string representation may show the items in an arbitrary and unpredictable sequence. Don't write any code that depends on a predictable sequence of retrieval from an unordered collection. So what did you expect instead, and what supports that expectation? -- \ “When we pray to God we must be seeking nothing — nothing.” | `\ —Saint Francis of Assisi | _o__) | Ben Finney -- http://mail.python.org/mailman/listinfo/python-list