Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #68491
| 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> |
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 | Next — Previous in thread | Next in thread | Find similar | Unroll 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