我喜欢Python中的pprint模块。我经常用它来进行测试和调试。我经常使用width选项确保输出适合我的终端窗口。
这一直很好,直到他们在Python 2.7中添加了新的ordered dictionary type(另一个我非常喜欢的很酷的功能)。如果我尝试漂亮地打印有序字典,它就不会显示得很好。整个东西不是每个键值对都在自己的行上,而是在一条长线上显示,这条长线会多次换行,很难阅读:
这一直很好,直到他们在Python 2.7中添加了新的ordered dictionary type(另一个我非常喜欢的很酷的功能)。如果我尝试漂亮地打印有序字典,它就不会显示得很好。整个东西不是每个键值对都在自己的行上,而是在一条长线上显示,这条长线会多次换行,很难阅读:
>>> from collections import OrderedDict
>>> o = OrderedDict([("aaaaa", 1), ("bbbbbb", 2), ("ccccccc", 3), ("dddddd", 4), ("eeeeee", 5), ("ffffff", 6), ("ggggggg", 7)])
>>> import pprint
>>> pprint.pprint(o)
OrderedDict([('aaaaa', 1), ('bbbbbb', 2), ('ccccccc', 3), ('dddddd', 4), ('eeeeee', 5), ('ffffff', 6), ('ggggggg', 7)])
这里有人知道如何使它像旧的无序字典一样打印得好看吗?如果我花足够的时间,可能可以使用PrettyPrinter.format方法来解决,但我想知道这里是否已经有人知道解决方案。
更新:我为此提交了一个错误报告。您可以在http://bugs.python.org/issue10592中查看它。
pprint
将更好地处理OrderedDict
对象。 - Flimmdict
对象的(在Python的新版本中保留插入顺序),而不是关于OrderedDict
对象的。我修改了标题以使其更清晰。 - Flimmpprint
对dict
对象中的键进行排序,请参阅此问题:https://dev59.com/BF8e5IYBdhLWcg3wfajv - Flimm