Re: Incompatible change discussion: Pretty printing of ordered dict.
Wes Turner <[email protected]> Fri, 4 Aug 2017 09:36:12 -0500
| Newsgroups | gmane.comp.python.ipython.devel |
|---|---|
| Message-ID | <CACfEFw86tuNw=2ZdzB7_Y_wfUUG_3xwvMsARJfoS6hSaRoDTPQ@mail.gmail.com> |
--===============7580443425220674480== Content-Type: multipart/alternative; boundary="94eb2c1cd4883765de0555ee6b10" --94eb2c1cd4883765de0555ee6b10 Content-Type: text/plain; charset="UTF-8" ```python repr(dict) import pprint pprint.pprint(dict) print(pprint.pformat(dict) ``` On Friday, August 4, 2017, MinRK <[email protected]> wrote: > I'm pretty strongly in favor of keeping the sorting in our default > pretty-printing. It's extremely valuable for interacting with dictionaries > to have consistent, predictable display. There are plenty of ways to > illustrate dict ordering, such as by iterating through the dict , e.g. > `list(dict)`. > > -Min > > On Thu, Aug 3, 2017 at 6:38 PM, Carl Smith <[email protected] > <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: > >> I'm with Thomas. >> >> On Wed, 2 Aug 2017 22:30 Wes Turner, <[email protected] >> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: >> >>> Maybe a SORT_DICT_KEYS bool configuration setting? Really practically >>> only in order to teach: >>> >>> - dict >>> - https://docs.python.org/3/tutorial/datastructures.html#dictionaries >>> - PYTHONHASHSEED / -R >>> - https://docs.python.org/3/using/cmdline.html#envvar-PYTHONHASHSEED >>> - https://docs.python.org/3/using/cmdline.html#cmdoption-R >>> - collections.OrderedDict (is backwards compatible) >>> - https://docs.python.org/3/library/collections.html#ordered >>> dict-objects >>> >>> >>> >>> On Wednesday, August 2, 2017, Matthias Bussonnier < >>> [email protected] >>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: >>> >>>> Hi all, >>>> >>>> As you may or may not be aware, with Python 3.6 the dictionary are >>>> ordered by default. It is technically an implementation detail, though >>>> some people would love for it not to. >>>> >>>> Regardless, IPython has for a long time pretty-printed the dictionary >>>> with _sorted_ keys, this thus prevent to teach python and show that >>>> dictionaries maintain order. Thus there is the question of wether we >>>> should disable sorting keys while pretty-printing. >>>> >>>> https://github.com/ipython/ipython/issues/10110 >>>> >>>> This seem like a minor change, but I'd like to know if some of you are >>>> _relying_ on the ordering of dict when they are printed, or have >>>> compelling arguments against (or for) removing sorting of the keys >>>> before pretty_printing. >>>> >>>> If you care about the above subject, please have your voice heard in >>>> above issue. >>>> >>>> Thanks, >>>> -- >>>> Matthias >>>> _______________________________________________ >>>> IPython-dev mailing list >>>> [email protected] >>>> https://mail.python.org/mailman/listinfo/ipython-dev >>>> >>> _______________________________________________ >>> IPython-dev mailing list >>> [email protected] >>> <javascript:_e(%7B%7D,'cvml','[email protected]');> >>> https://mail.python.org/mailman/listinfo/ipython-dev >>> >> >> _______________________________________________ >> IPython-dev mailing list >> [email protected] >> <javascript:_e(%7B%7D,'cvml','[email protected]');> >> https://mail.python.org/mailman/listinfo/ipython-dev >> >> > --94eb2c1cd4883765de0555ee6b10 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div>```python</div>repr(dict)<div><br></div><div>import pprint</div><div>p= print.pprint(dict)</div><div>print(pprint.pformat(dict)</div><div>```<br><b= r>On Friday, August 4, 2017, MinRK <<a href=3D"mailto:[email protected]= om">[email protected]</a>> wrote:<br><blockquote class=3D"gmail_quote= " style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><= div dir=3D"ltr">I'm pretty strongly in favor of keeping the sorting in = our default pretty-printing. It's extremely valuable for interacting wi= th dictionaries to have consistent, predictable display. There are plenty o= f ways to illustrate dict ordering, such as by iterating through the dict ,= e.g. `list(dict)`.<div><br></div><div>-Min</div></div><div class=3D"gmail_= extra"><br><div class=3D"gmail_quote">On Thu, Aug 3, 2017 at 6:38 PM, Carl = Smith <span dir=3D"ltr"><<a href=3D"javascript:_e(%7B%7D,'cvml',= '[email protected]');" target=3D"_blank">[email protected]</a= >></span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 = 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir=3D"ltr">I'= m with Thomas. </p><div><div> <br><div class=3D"gmail_quote"><div dir=3D"ltr">On Wed, 2 Aug 2017 22:30 We= s Turner, <<a href=3D"javascript:_e(%7B%7D,'cvml','wes.turne= [email protected]');" target=3D"_blank">[email protected]</a>> wrote:<b= r></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border= -left:1px #ccc solid;padding-left:1ex">Maybe a SORT_DICT_KEYS bool configur= ation setting? Really practically only in order to teach:<div><br></div><di= v>- dict</div><div>=C2=A0 -=C2=A0<a href=3D"https://docs.python.org/3/tutor= ial/datastructures.html#dictionaries" target=3D"_blank">https://docs.python= .org/3/tu<wbr>torial/datastructures.html#dic<wbr>tionaries</a></div><div>-= =C2=A0<span style=3D"color:rgb(34,34,34);font-family:Roboto-Regular,Helveti= caNeue,Arial,sans-serif;font-size:14px">PYTHONHASHSEED / -R</span></div><di= v><span style=3D"color:rgb(34,34,34);font-family:Roboto-Regular,HelveticaNe= ue,Arial,sans-serif;font-size:14px">=C2=A0 -=C2=A0</span><font color=3D"#22= 2222" face=3D"Roboto-Regular, HelveticaNeue, Arial, sans-serif"><span style= =3D"font-size:14px"><a href=3D"https://docs.python.org/3/using/cmdline.html= #envvar-PYTHONHASHSEED" target=3D"_blank">https://docs.python.org/3/us<wbr>= ing/cmdline.html#envvar-PYTHON<wbr>HASHSEED</a></span></font></div><div><fo= nt color=3D"#222222" face=3D"Roboto-Regular, HelveticaNeue, Arial, sans-ser= if"><span style=3D"font-size:14px">=C2=A0 - <a href=3D"https://docs.python.= org/3/using/cmdline.html#cmdoption-R" target=3D"_blank">https://docs.python= .org/3/usin<wbr>g/cmdline.html#cmdoption-R</a></span></font></div><div><fon= t color=3D"#222222" face=3D"Roboto-Regular, HelveticaNeue, Arial, sans-seri= f"><span style=3D"font-size:14px">- collections.OrderedDict (is backwards c= ompatible)</span></font></div><div><span style=3D"color:rgb(34,34,34);font-= family:Roboto-Regular,HelveticaNeue,Arial,sans-serif;font-size:14px">=C2=A0= -=C2=A0<a href=3D"https://docs.python.org/3/library/collections.html#order= eddict-objects" target=3D"_blank">https://docs.python.org/3/li<wbr>brary/co= llections.html#ordered<wbr>dict-objects</a></span></div><div><font color=3D= "#222222" face=3D"Roboto-Regular, HelveticaNeue, Arial, sans-serif"><span s= tyle=3D"font-size:14px"><br></span></font></div><div><font color=3D"#222222= " face=3D"Roboto-Regular, HelveticaNeue, Arial, sans-serif"><span style=3D"= font-size:14px"><br></span></font><br>On Wednesday, August 2, 2017, Matthia= s Bussonnier <<a href=3D"javascript:_e(%7B%7D,'cvml','busson= [email protected]');" target=3D"_blank">[email protected]= om</a>> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 = 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br> <br> As you may or may not be aware, with Python 3.6 the dictionary are<br> ordered by default. It is technically an implementation detail, though<br> some people would love for it not to.<br> <br> Regardless, IPython has for a long time pretty-printed the dictionary<br> with _sorted_ keys, this thus prevent to teach python and show that<br> dictionaries maintain order. Thus there is the question of wether we<br> should disable sorting keys while pretty-printing.<br> <br> <a href=3D"https://github.com/ipython/ipython/issues/10110" target=3D"_blan= k">https://github.com/ipython/ipy<wbr>thon/issues/10110</a><br> <br> This seem like a minor change, but I'd like to know if some of you are<= br> _relying_ on the ordering of dict when they are printed, or have<br> compelling arguments against (or for) removing sorting of the keys<br> before pretty_printing.<br> <br> If you care about the above subject, please have your voice heard in<br> above issue.<br> <br> Thanks,<br> --<br> Matthias<br> ______________________________<wbr>_________________<br> IPython-dev mailing list<br> <a>[email protected]</a><br> <a href=3D"https://mail.python.org/mailman/listinfo/ipython-dev" target=3D"= _blank">https://mail.python.org/mailma<wbr>n/listinfo/ipython-dev</a><br> </blockquote></div> ______________________________<wbr>_________________<br> IPython-dev mailing list<br> <a href=3D"javascript:_e(%7B%7D,'cvml','[email protected]&= #39;);" target=3D"_blank">[email protected]</a><br> <a href=3D"https://mail.python.org/mailman/listinfo/ipython-dev" rel=3D"nor= eferrer" target=3D"_blank">https://mail.python.org/mailma<wbr>n/listinfo/ip= ython-dev</a><br> </blockquote></div> </div></div><br>______________________________<wbr>_________________<br> IPython-dev mailing list<br> <a href=3D"javascript:_e(%7B%7D,'cvml','[email protected]&= #39;);" target=3D"_blank">[email protected]</a><br> <a href=3D"https://mail.python.org/mailman/listinfo/ipython-dev" rel=3D"nor= eferrer" target=3D"_blank">https://mail.python.org/mailma<wbr>n/listinfo/ip= ython-dev</a><br> <br></blockquote></div><br></div> </blockquote></div> --94eb2c1cd4883765de0555ee6b10-- --===============7580443425220674480== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ IPython-dev mailing list [email protected] https://mail.python.org/mailman/listinfo/ipython-dev --===============7580443425220674480==--