我使用pprint来显示两个字典之间的diff。有时,字典中的值是长字符串,我希望将其显示为单行,因此我将width设置为某个较大的值。不幸的是,有时这些字典很浅(例如,在一般情况下,它们可以嵌入列表和字典,有些只是带有短字符串值的字典),在这种情况下,pprint在一行上“漂亮地打印”它们:
>>> pprint.pprint({'a': 'a', 'b': 'b'})
{'a': 'a', 'b': 'b'}有没有办法强制pprint总是垂直显示列表和字典?同样,width不是一种选择,因为它将字符串拆分在行内(即,在\n上中断是好的,但在其他地方就不行了)。
>>> pprint.pprint({'a': 'a ' * 50}, width=20)
{'a': 'a a a a a a '
'a a a a a a '
'a a a a a a '
'a a a a a a '
'a a a a a a '
'a a a a a a '
'a a a a a a '
'a a a a a a '
'a a '}如果pprint不合适,有没有什么标准库可以帮我省去编写专用例程的麻烦?
发布于 2016-09-18 17:56:06
选项:使用json
我发现将字典转换为JSON比pprint更可预测。此外,您还可以选择对键进行排序,这将有助于您进行比较
>>> import json
>>> d1 = {'a': 'a', 'b': 'b', 'c':'c'}
>>> print(json.dumps(d1, sort_keys=True, indent=''))
{
"a": "a",
"b": "b",
"c": "c"
}
>>> d2 = {'a': 'a ' * 50, 'b':'b', 'c': 'c ' * 50}
>>> print(json.dumps(d2, sort_keys=True, indent=''))
{
"a": "a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a ",
"b": "b",
"c": "c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c "
}https://stackoverflow.com/questions/39555387
复制相似问题