python - 在 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 完成还是有其他方法?
解决方案
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"
}
推荐阅读
- css - SVG没有完全填充
- sql-server - Dynamic SQL Pivot:根据列值创建新列并解析列名
- c++ - 将成员函数指针分配为另一个函数的回调
- javascript - 如何使用接口注释嵌套对象以进行配置检查?
- c# - 保存时如何更改文件名?
- javascript - Firebase DB-JS 库 - 保护/安全数据读取
- google-apps-script - 谷歌应用程序脚本有时在循环中抛出错误 - 帮助调试?
- javascript - 从 Vue.js 项目访问嵌套的 firestore 集合或文档
- coding-style - 编码真的需要逻辑还是其中的一部分是复制粘贴游戏?
- c++ - 是否有替代 NSFileCoordinator 在沙箱中打开相关文件的方法?