如何打印按键排序的字典?

时间:2015-04-23 23:21:26

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

我的用例涉及打印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

  3. 我有什么选择?我更喜欢使print(json.loads(json_str))起作用的东西。但愿意接受print(str_func(json.loads(json_str)))

    如果你有一个特定于我的json用例的解决方案,那也会很棒。但我更喜欢一般的答案。我知道dict密钥只需要hashable而不是“可比较”(在可能没有总订单的意义上),因此绝对通用的解决方案可能是不可能的。但我倾向于相信我们可以为所有有效的JSON类型提供解决方案。

    我正在使用python3

1 个答案:

答案 0 :(得分:4)

print(json.dumps(your_dict, sort_keys=True))