Equal sets with unequal print and str() representations

rusi rustompmody at gmail.com
Wed Oct 19 07:17:41 EDT 2011


On Oct 17, 7:47 am, Terry Reedy <tjre... at udel.edu> wrote:
> On 10/16/2011 9:17 PM, Ian Kelly wrote:
>
> > On Sun, Oct 16, 2011 at 5:52 PM, Ganesh Gopalakrishnan
> > <gan... at cs.utah.edu>  wrote:
> >> 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.
>
> > I'm not sure exactly which keys are colliding here, but in general the
> > iteration order of a set (or dict) depends not just on the contents,
> > but also on the order of insertion.  And of course the repr depends on
> > the iteration order -- anything consistent would require sorting,
> > which would be O(n log n) and is not even necessarily well-defined.
>
> To put it another way, any dependence on the arbitrary ordering of
> unordered collections in iteration or displays is a programming error.

Given that this is becoming a FAQ, I wonder if something like the
above statement should go into the docs?



More information about the Python-list mailing list