gpt4 book ai didi

python - 有什么方法可以正确打印 OrderedDict?

转载 作者:IT老高 更新时间:2023-10-28 21:10:22 25 4
gpt4 key购买 nike

我喜欢 Python 中的 pprint 模块。我经常使用它进行测试和调试。我经常使用宽度选项来确保输出完全适合我的终端窗口。

在他们添加新的 ordered dictionary type 之前它一直运行良好在 Python 2.7 中(我非常喜欢的另一个很酷的功能)。如果我尝试漂亮地打印有序字典,它不会很好地显示。不是将每个键值对放在单独的一行中,而是将整个内容显示在一行很长的行中,该行包含很多次并且难以阅读:

>>> 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 上查看它.

最佳答案

从 Python 3.7 开始,Python 保证字典中的键将保留其插入顺序。 (不过,它们的行为仍然与 OrderedDict 对象不完全相同,因为两个字典 ab 可以被认为是相等的 a == b 即使键的顺序不同,而 OrderedDict 在测试相等性时会检查这一点。)

Python 3.8 或更新版本:

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

>>> example_dict = {'x': 1, 'b': 2, 'm': 3}
>>> import pprint
>>> pprint.pprint(example_dict, sort_dicts=False)
{'x': 1, 'b': 2, 'm': 3}

Python 3.7 或更早版本:

作为临时解决方法,您可以尝试以 JSON 格式转储,而不是使用 pprint

您丢失了一些类型信息,但它看起来不错并且保持顺序。

>>> import json
>>> print(json.dumps(example_dict, indent=4))
{
"x": 1,
"b": 2,
"m": 3
}

关于python - 有什么方法可以正确打印 OrderedDict?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4301069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com