DIST使用从它所构造的迭代器来轻而易举地填充自己,其中键被访问。
IterDict的Python项目详细描述
#你不是一直想要无限的口述吗?
iterdicts与常规python命令类似,只是它们只是 按需填充。这给了他们大多数相同的优势 生成器,例如在非常大(或无限)上操作的能力。 数据集。
##访问尚未填充的密钥
当调用get或getitem>方法时,iterdct尝试 以正常方式获取密钥。如果失败了,它开始消耗 它使用迭代器构造并将这些项添加到自身,直到 它找到了关键(或者宇宙死于热死):
>>> d = IterDict((a, a) for a in xrange(1000000000000000)) # 1 quadrillion (US) >>> d[10] 10 >>> list(d) [you're going to be here a while]
##重要区别
dict在初始化时使用它的迭代器,如果是重复的 最后一个值获胜:
>>> d = dict([(1,1),(1,2)]) >>> d {1: 2} >>> del d[1] >>> d {}
它们的不同之处在于一旦 找到请求的密钥的第一个实例:
>>> i = IterDict([(1,1), (1,2)]) >>> i IterDict<{}, fed by <listiterator object at 0x105bab8d0>> >>> i[1] 1 >>> i IterDict<{1: 1}, fed by <listiterator object at 0x105bab8d0>>
由于空间、时间和复杂性的原因,迭代器不跟踪那些 曾经出现过,后来被删除。这意味着钥匙可以 如果iterdict的迭代器再次生成它们,则在删除后重新出现。 继续前面的示例:
>>> del i[1] >>> i IterDict<{}, fed by <listiterator object at 0x105bab890>> >>> i[1] 2 >>> i IterDict<{1: 2}, fed by <listiterator object at 0x105bab890>>