这是一个基本上进行迭代的示例代码。
>>> 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 个项目),则内存效率不高。
但由于字典不是有序结构,我认为必须获取该键列表。
有人可能会争辩说:键的数量远少于计算键和值的项目数。
有什么建议吗?或者更好的方法(当然我需要支持嵌套迭代,但那是另一回事)。
最佳答案
使用 .iterkeys()
在 python 2.x 中;在 python 3.x 中,.keys()
is a view而不是新列表。在 python 2.7 中,您还可以使用 viewkeys()
method得到同样的东西。
有一个等价的.iteritems()
method ,使您的实用方法变得多余。 :-) 同样的评论适用于 python 3.x 和 2.7,请参阅提供的文档。
关于python - 制作一个简单的 Python 字典生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12270492/