【发布时间】:2017-07-17 20:44:51
【问题描述】:
我想为字典/列表中的每个项目执行一些功能。我试过这样做,但它没有给出预期的结果。这是代码。
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 in a.iteritems(): f(k, v)即可获得您想要的任何功能f。在for循环中做操作有什么问题? -
我不能在 for 循环中添加这段代码,部分原因是代码的结构方式,其次,如果走这条路,我必须更改很多东西。
标签: python-2.7 dictionary iterator