我正在使用默认字典.我需要pprint.
然而,当我pprint......这就是它的样子.
defaultdict(<functools.partial object at 0x1f68418>, {u'300:250': defaultdict(<functools.partial object at 0x1f683c0>, {0: defaultdict(<type 'list'>, {u'agid1430864021': {u'status': u'0', u'exclude_regi..........
Run Code Online (Sandbox Code Playgroud)
如何pprint使用默认字典?
Jon*_*nts 38
我之前用过的pprint(dict(defaultdict))是解决方法.
Red*_*low 19
我发现的最好的解决方案是一个黑客,但一个优雅的解决方案(如果一个黑客可以):
class PrettyDefaultDict(collections.defaultdict):
__repr__ = dict.__repr__
Run Code Online (Sandbox Code Playgroud)
然后使用PrettyDefaultDict该类而不是collections.defaultdict.它的工作原理是因为pprint模块的工作方式(至少在2.7上):
r = getattr(typ, "__repr__", None)
if issubclass(typ, dict) and r is dict.__repr__:
# follows pprint dict formatting
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我们"欺骗"pprint,认为我们的字典类就像正常一样dict.
Mar*_*kus 13
如果您不必使用pprint,您可以使用json漂亮的打印defaultdict:
print(json.dumps(my_default_dict, indent=4))
Run Code Online (Sandbox Code Playgroud)
这也适用于嵌套的默认值.
我真的很喜欢这个处理嵌套默认字典的解决方案。这有点像黑客,但在 pdbing 时可以很好地完成工作:
import json
data_as_dict = json.loads(json.dumps(data_as_defaultdict))
print(data_as_dict)
Run Code Online (Sandbox Code Playgroud)