如何在没有类型的情况下打印defaultdict变量?

8 python dictionary defaultdict

在以下代码中:

from collections import defaultdict

confusion_proba_dict = defaultdict(float)

for i in xrange(10):
    confusion_proba_dict[i] = i + 10

print confusion_proba_dict
Run Code Online (Sandbox Code Playgroud)

输出是:

defaultdict(<type 'float'>, {0: 10, 1: 11, 2: 12, 3: 13, 4: 14, 5: 15, 6: 16, 7: 17, 8: 18, 9: 19})
Run Code Online (Sandbox Code Playgroud)

但是,我需要输出为:

{0: 10, 1: 11, 2: 12, 3: 13, 4: 14, 5: 15, 6: 16, 7: 17, 8: 18, 9: 19}
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

Cop*_*eld 12

只需将其转换为常规字典

print( dict(confusion_proba_dict) )
Run Code Online (Sandbox Code Playgroud)

但如果您打算使用这样的,只需使用常规字典,因为您不使用defaultdict的任何优点

  • 实际上,没有必要首先将`defaultdict`实例转换为`dict`.相反,只需调用基类`dict`的方法来获取字符串表示,但将派生类实例作为其`self`参数传递给它.即`print(dict .__ repr __(confusion_proba_dict))`.避免转换会更有效,对于较大的词典则更为明显.这基本上是@idjaw所暗示的. (3认同)

Céd*_*ic2 7

有趣的解决方案!(如果您有 defaultdict 的 defaultdict 也可以使用!)

import json
import pprint
pprint.pprint(json.loads(json.dumps(confusion_proba_dict)))
Run Code Online (Sandbox Code Playgroud)

  • 这实际上是 defaultdict 的嵌套 defaultdict 的一个很好的解决方案。 (2认同)

小智 5

蟒蛇2:

print dict(confusion_proba_dict)
Run Code Online (Sandbox Code Playgroud)

蟒蛇3:

print(dict(confusion_proba_dict))
Run Code Online (Sandbox Code Playgroud)