2

我正在迭代使用以下内容创建的字典。

 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>
4

1 回答 1

4

您已经像常规字典一样迭代默认字典,但您也在打印默认字典表示。

要像打印常规字典一样打印这些,只需将它们变回一个:

 for k,v in tree.iteritems():
     print k, dict(v)

请注意,adefaultdict是 的直接子类dict,除了更新的__getitem__行为和更新的__repr__钩子1之外,a 的行为与正常defaultdict行为完全相同dict,当然在迭代方面。

1__copy__并且也被覆盖,以便在使用模块时__deepcopy__创建一个新的。出于同样的原因,为该模块提供了一个自定义。defaultdictcopy__reduce__pickle

于 2012-08-24T11:08:11.240 回答