【问题标题】:How to print dict sorted by keys?如何打印按键排序的dict?
【发布时间】:2015-04-23 23:21:26
【问题描述】:

我的用例涉及打印 json。为了便于阅读,我想按键排序打印它。 dict 出现在图片中,因为在我的情况下 json.loads 返回一个 dict

我尝试过的事情:

  1. dict.__str__ = myStrFn 导致TypeError: can't set attributes of built-in/extension type 'dict'

  2. myDict https://stackoverflow.com/a/931822/438758。这不适用于 嵌套字典,因为嵌套字典的类型为 dict 而不是myDict

我在这里有什么选择?我更喜欢能让print(json.loads(json_str)) 工作的东西。但会满足于print(str_func(json.loads(json_str)))

如果您有针对我的 json 用例的解决方案,那也太好了。但我更喜欢一个通用的答案。我知道 dict 键只需要是 hashable 而不是“可比较的”(从某种意义上说可能没有总顺序),因此可能不可能有一个绝对通用的解决方案。但我倾向于相信我们可以为所有有效的 JSON 类型提供解决方案。

我正在使用python3

【问题讨论】:

    标签: python json python-3.x serialization dictionary


    【解决方案1】:
    print(json.dumps(your_dict, sort_keys=True))
    

    【讨论】:

    • 这很快。谢谢。
    • 请注意,这对于不可序列化为 JSON 的类型(例如 datetime.datetime)会失败。
    • @uckelman:确实。在这种情况下,原始输入 JSON,提问者将他的问题描述为“打印 json”,这就是为什么我觉得打印 JSON 是合适的。如果原来的不是 JSON,我只会建议将其作为替代解决方案,因为 JSON 语法与 Python 语法不完全兼容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    • 2017-12-27
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多