DIST使用从它所构造的迭代器来轻而易举地填充自己,其中键被访问。

IterDict的Python项目详细描述


#你不是一直想要无限的口述吗?

iterdicts与常规python命令类似,只是它们只是 按需填充。这给了他们大多数相同的优势 生成器,例如在非常大(或无限)上操作的能力。 数据集。

##访问尚未填充的密钥

当调用getgetitem>方法时,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>>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java:字符串。RTL设备语言用标志“+”格式化,数字后加符号   java GAE作为桌面应用程序(Swing)的服务提供商   java将InputStream转换为FileInputStream不适用于Apache POI   java外部Voronoi库“网格”:什么是草图和处理?   重载重写的泛型方法java   java显示组织上设置的错误。springframework。验证。jsp中的错误对象   java一些Spring模型属性没有显示在我的JSP中   java无法编译Guava 23的SimpleTimeLimiter示例   java如何更改JTree中的“根”目录名?   java如何在安卓中对相对布局产生连锁反应?   java错误:org。冬眠例外SQLGrammarException:无法提取结果集,dateAccessed是未知列   如何使用java监听JSON文件更新   由抽象封闭类创建的匿名内部类能否通过反射确定实现类?