关于改进我循环字典值的方法的建议?

时间:2011-03-20 15:18:13

标签: python optimization loops dictionary

这就是我一直在使用的:

for i in iter(SHAPES):
    SHAPES[i].drawOrder(97)
    SHAPES[i].alpha(CFG["SHP_alpha"])
    .
    .

这就是我的想法:

for i, v in app.SHAPES.items():
    v.drawOrder(97)
    v.alpha(CFG["SHP_alpha"])
    .
    .

我应该使用哪两个?还有其他方法吗?

3 个答案:

答案 0 :(得分:6)

如果您不需要密钥,请忽略它并使用.itervalues()。如果你需要密钥和值,.iteritems()确实是要走的路。请注意,在Python 3中,那些摆脱了iter前缀,而Python 2 .values().items()(返回列表)已经消失了。它们有(稀有)用途,但是当你只是迭代时,就没有必要复制一半字典了。

除非你真的需要一个迭代器(例如iter),否则永远不要自己调用next。这绝不是经常发生的事情;)for i in iterable已经隐含地使用iter(iterable)

答案 1 :(得分:0)

迭代dict中的值。

for v in SHAPES.itervalues():
    v.drawOrder(97)
    ...

答案 2 :(得分:0)

为字典提供最强灵活性的选项是使用enumerate()和dict.iteritems()。

for i, (k,v) in enumerate(SHAPES.iteritems()):
   print "My index is {0}, key is {1}, and value is {2}".format(i, k, v)