首页 > 解决方案 > 在 Python 中使用 pprint.pprint 后,是否可以避免排序字典输出?

问题描述

代码是:

from pprint import pprint
d = {"b" : "Maria", "c" : "Helen", "a" : "George"}
pprint(d, width = 1)

输出是:

{'a': 'George',
'b': 'Maria',
'c': 'Helen'}

但是,所需的输出是:

{'b': 'Maria',
'c': 'Helen',
'a': 'George'}

这可以用 pprint 完成还是有其他方法?

标签: pythondictionarypretty-printpprint

解决方案


Python 3.8 或更新版本:

您可以使用sort_dicts=False它来防止它按字母顺序对它们进行排序:

pprint.pprint(data, sort_dicts=False)

Python 3.7 或更早版本:

由于 Python 3.7(或 cPython 的 3.6),dict保留了插入顺序。对于之前的任何版本,您都需要使用OrderedDict来保持密钥的顺序。

虽然,从文档上pprint

字典在计算显示之前按键排序。

这意味着pprint无论如何都会破坏您想要的订单。

替代方法:

您还可以使用json.dumps漂亮的打印数据。

代码:

import json
from collections import OrderedDict

# For Python 3.6 and prior, use an OrderedDict
d = OrderedDict(b="Maria", c="Helen", a="George")

print(json.dumps(d, indent=1))

输出:

{
 "b": "Maria",
 "c": "Helen",
 "a": "George"
}

推荐阅读