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']})

どうすればこのようなものを取り除くことができますか? 通常の dict のように反復するにはどうすればよいですか?:

defaultdict(<functools.partial object at 0x1e0a050>
4

1 に答える 1

4

通常の辞書のようにデフォルトの辞書をすでに繰り返し処理していますが、 defaultdict表現も出力しています。

これらを通常の辞書を印刷するように印刷するには、それらを 1 つに戻すだけです。

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

defaultdictaは の直接のサブクラスであり、更新された動作と更新されたフック1dictを除けば、 aは通常の動作とまったく同じように動作することに注意してください。__getitem____repr__defaultdictdict

1__copy__もオーバーライドされ、モジュールを使用するときに__deepcopy__新しいものを作成します。同じ理由で、モジュールにカスタムが用意されています。defaultdictcopy__reduce__pickle

于 2012-08-24T11:08:11.240 に答える