这是一个基本上进行迭代的示例代码。
>>> d = {'lol': {'12': '3', '35':''}, 'w': {'12': '3', '35':''}}
>>> def iteritems(s):
... keys = s.keys()
... for key in keys:
... yield key, s[key]
...
>>> for k, v in iteritems(d):
... print k, v
...
w {'12': '3', '35': ''}
lol {'12': '3', '35': ''}
这是一个有效的生成器。但是生成器iteritems
必须调用s.keys()
缓存字典中的所有键。如果字典很大(超过 100 个项目),则内存效率不高。
但由于字典不是有序结构,我认为获取该键列表是必须的。
有人可能会争辩说:键的数量远远少于计算键和值的项目数。
有什么建议吗?或者更好的方法(当然我需要支持嵌套迭代,但这是另一回事)。