如何漂亮地打印嵌套字典?

新手上路,请多包涵

如何在 Python 中漂亮地打印深度约为 4 的字典?我尝试使用 pprint() 进行漂亮的打印,但它不起作用:

 import pprint
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(mydict)

我只是想要每个嵌套的缩进( "\t" ),所以我得到这样的东西:

 key1
    value1
    value2
    key2
       value1
       value2

等等

我怎样才能做到这一点?

原文由 user248237 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

我不确定您希望格式看起来如何,但您可以从这样的函数开始:

 def pretty(d, indent=0):
   for key, value in d.items():
      print('\t' * indent + str(key))
      if isinstance(value, dict):
         pretty(value, indent+1)
      else:
         print('\t' * (indent+1) + str(value))

原文由 sth 发布,翻译遵循 CC BY-SA 4.0 许可协议

我的第一个想法是 JSON 序列化程序可能非常擅长嵌套字典,所以我会作弊并使用它:

 >>> import json
>>> print(json.dumps({'a':2, 'b':{'x':3, 'y':{'t1': 4, 't2':5}}},
...                  sort_keys=True, indent=4))
{
    "a": 2,
    "b": {
        "x": 3,
        "y": {
            "t1": 4,
            "t2": 5
        }
    }
}

原文由 Ken 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题