Chris Angelico <ros...@gmail.com> wrote: > On Tue, Mar 18, 2014 at 11:32 AM, Mok-Kong Shen > <mok-kong.s...@t-online.de> wrote: >> Is there a way to force a certain ordering of the printout or else >> somehow manage to get at least a certain stable ordering of the >> printout (i.e. input and output are identical)? > > Yes; instead of simply printing it out (which calls repr()), > explicitly iterate over it, like this: > > def display(d): > return '{'+','.join('%r: %r'%(key,d[key]) for key in sorted(d))+'}' > [...] > At least, it's consistent as long as the keys all sort consistently, > which they will if you use simple strings. Other types of keys may not > work, and in fact mixing types may cause an exception: > >>>> print(display({True:1,"Hello":2})) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > File "<stdin>", line 2, in display > TypeError: unorderable types: str() < bool() > > But for strings, this is the easiest way to get what you're looking for.
I would say using pprint.pprint is even easier and it works with your failing example: >>> pprint.pprint({True:1,"Hello":2}) {True: 1, 'Hello': 2} Ciao Marc -- https://mail.python.org/mailman/listinfo/python-list