To me it also seems to be the most sensible behaviour, since
dictionaries with their keys and values are different from most other
sequences.
You've got a point but

1. That goes against the compact=True expected behaviour

2. Small dicts (e.g. /{x: x for x in range(5)}/) are still printed on a single line (regardless of the compact parameter), so I don't believe that was the rationale behind this behaviour.


On 9/11/18 1:05 PM, Max Zettlmeißl wrote:
On Tue, Sep 11, 2018 at 1:58 PM, Nicolas Hug <nio...@gmail.com> wrote:
pprint({x: x for x in range(15)}, compact=True)

would be be printed in 15 lines while it could fit on 2.


Is this a bug or was this decided on purpose?
It is on purpose as can be seen in the code for pprint [1], which
calls _format [2], which in the case of a dictionary calls
_pprint_dict [3], which ultimately calls _format_dict_items [4].
(which does not use compact or rather _compact)

To me it also seems to be the most sensible behaviour, since
dictionaries with their keys and values are different from most other
sequences. In a dictionary the relation between keys and values is the
most important one and reading a dictionary certainly is easier if
each key value pair has a line of it's own. (Especially if the keys
and values vary a lot in their lengths.)

[1] 
https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/pprint.py#L138
[2] 
https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/pprint.py#L154
[3] 
https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/pprint.py#L180
[4] 
https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/pprint.py#L333
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to