Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #68491

Re: Ordering in the printout of a dictionary

From Marc Christiansen <usenetmail@solar-empire.de>
Newsgroups comp.lang.python
Subject Re: Ordering in the printout of a dictionary
Date 2014-03-18 08:36 +0100
Message-ID <cl9lva-45d.ln1@pluto.solar-empire.de> (permalink)
References <lg8462$fnk$1@news.albasani.net> <mailman.8231.1395103693.18130.python-list@python.org>

Show all headers | View raw


Chris Angelico <rosuav@gmail.com> wrote:
> On Tue, Mar 18, 2014 at 11:32 AM, Mok-Kong Shen
> <mok-kong.shen@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

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Ordering in the printout of a dictionary Mok-Kong Shen <mok-kong.shen@t-online.de> - 2014-03-18 01:32 +0100
  Re: Ordering in the printout of a dictionary Chris Angelico <rosuav@gmail.com> - 2014-03-18 11:48 +1100
    Re: Ordering in the printout of a dictionary John Gordon <gordon@panix.com> - 2014-03-18 02:56 +0000
    Re: Ordering in the printout of a dictionary Marc Christiansen <usenetmail@solar-empire.de> - 2014-03-18 08:36 +0100
      Re: Ordering in the printout of a dictionary Chris Angelico <rosuav@gmail.com> - 2014-03-18 18:55 +1100

csiph-web