我正在迭代使用以下内容创建的dict。
tree = defaultdict(partial(defaultdict, partial(defaultdict, list)))
for dt, hour, value in flat_list:
tree[dt][hour]=[]
tree[dt][hour].append(value)
我的输出如下:
for k,v in tree.iteritems():
2012-08-07 defaultdict(<functools.partial object at 0x1e0a050>, {'17': ['30']})
2012-08-24 defaultdict(<functools.partial object at 0x1e0a050>, {'3': ['70']})
如何摆脱这些东西?我怎么像普通的词典?:
defaultdict(<functools.partial object at 0x1e0a050>
答案 0 :(得分:4)
你已经像普通的dict一样迭代默认的dicts,但你也打印 defaultdict表示。
要打印这些,就像打印常规字典一样,只需将它们变成一个:
for k,v in tree.iteritems():
print k, dict(v)
请注意,defaultdict
是dict
的直接子类,除了更新的__getitem__
行为和更新的__repr__
hook 1 之外, defaultdict
行为完全就像普通dict
一样,当然需要进行迭代。
1 __copy__
和__deepcopy__
也会被覆盖,以便在使用defaultdict
模块时创建新的copy
。出于同样的原因,为__reduce__
模块提供了自定义pickle
。