制作一个简单的Python字典生成器

Cpp*_*ner 4 python dictionary generator

这是一个基本上进行迭代的示例代码.

>>> 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': ''}
Run Code Online (Sandbox Code Playgroud)

这是一个有效的发电机.但是生成器iteritems必须调用s.keys()缓存字典中的所有键.如果字典很大(超过100个项目),那就没有内存效率.

但由于字典不是一个有序的结构,我认为获得密钥列表是必须的.

有人可能会说:键的数量远小于计算键和值的项目数.

有什么建议吗?或者更好的方式(当然我需要支持嵌套迭代,但这是另一回事).

Mar*_*ers 10

.iterkeys()在python 2.x中使用; 在python 3.x中,.keys()是一个视图,而不是一个新列表.在python 2.7中,您也可以使用该viewkeys()方法来获得相同的东西.

有一种等效的.iteritems()方法,使您的实用方法多余.:-)同样的评论适用于python 3.x和2.7,请参阅提供的文档.