【发布时间】:2013-02-22 22:06:54
【问题描述】:
假设我有一个这样的(嵌套)字典(注意列表值):
dic = {'level1':
{'level2':(1, 2),
'level3':
[
{'level4': (1, 2)},
{'level5': (1, 2)}
]
}
}
我正在寻找打印这本词典的正确方法,我正在使用json 来执行此操作:
import json
print json.dumps(dic, indent=4)
上面的代码给了我以下输出:
{
"level1": {
"level2": [
1,
2
],
"level3": [
{
"level4": [
1,
2
]
},
{
"level5": [
1,
2
]
}
]
}
}
虽然上面的输出非常好,但仍然很难阅读,特别是如果有很多级别和较长的名称。
我也试过yaml
import yaml
print yaml.dump(dic)
给出以下看起来很奇怪的内容:
level1:
level2: !!python/tuple [1, 2]
level3:
- level4: !!python/tuple [1, 2]
- level5: !!python/tuple [1, 2]
有没有其他库可以产生更好的转储,我认为下面的输出更容易阅读:
"level1"
|---"level2": 1, 2
|---"level3":
|---"level4": 1, 2
|---"level5": 1, 2
我相信上面的内容更容易阅读,并且可能有 python 库可以做到这一点。
【问题讨论】:
-
默认格式的优点是它是有效的 JSON。我认为你需要推出自己的打印功能才能得到你想要的。
-
你可以试试YAML,但是标准库里没有。
-
YAML+1,可读性强
-
@JasonSperske,YAML 输出见上文。
-
@PavelAnossov,YAML 输出见上文
标签: python printing human-readable