辞書/リストの各項目に対していくつかの機能を実行したい。私はこれをやってみたが、期待した結果が得られなかった。ここにコードがあります。このためdictの各メンバーのdict iterator関数を呼び出す
class GroupDict(dict):
def iteritems(self):
# do some operation for every member in dict
print "in __iter__"
return super(GroupDict, self).iteritems()
a = GroupDict()
a['a'] = 0
a['b'] = 1
for key in a.iteritems():
print key
私は出力
in __iter__ ('a', 0) ('b', 1)
を取得しかし、期待していますと、
in __iter__ ('a', 0) in __iter__ ('b', 1)
私はforループ内で操作を行うにはしたくないですが、私は何を言及しますクラスのすべてのメンバーに実行する必要があります。これで私を助けてください。
これを実現するために、なぜあなたはフォームdictを継承し、iteritemsをオーバーライドするのですか?単に 'for k、vをa.iteritems():f(k、v)'とすると、あなたが望む関数f forループで操作を実行すると何が問題になりますか? –
このコードをforループ内に追加することはできません。コードが構造化されているために部分的に追加されています.2番目に、そのルートがなくなったら多くの変更が必要です。 – shrishinde