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

标签 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': ''}

这是一个有效的生成器。但是生成器 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/

相关文章:

c# - 字典初始化器的类型

xcode - 在 UserDefaults 中存储 Int64

c++ - 非重复随机数发生器

javascript - 如何返回到随机文本生成器函数的开头?

C++ 如何声明映射变量

c - 如何将随机整数的范围从1-10扩大到1-200

python - 如何将变量设置为Python中正则表达式找到的字符串

python - python中的分割线

python - 并行化Python列表理解并没有提高性能

python - Bottle 框架 python - 站点无法访问