我们知道常规的Python字典是无序的,但是当键是一组自然数的时候呢?当域是一组自然数时,hash
函数似乎是一个恒等式函数,对x = {0:'a', 1:'b', 2:'c'}
这样的函数进行迭代似乎可以得到密钥的自然顺序,即0、1、2。。你知道吗
那么这种行为可以信赖吗?你知道吗
(是的,我知道OrderedDict)
编辑:
这是我的具体用法,或者至少这抓住了我所看到的精神。你知道吗
x = dict((a, chr(a)) for a in range(10))
for i in x:
print i
这似乎能维持秩序。你知道吗
Tags:
不,你不能依赖这种行为。它是一个实现细节,可以从一个版本的Python更改到下一个版本,甚至可以从一个系统更改到下一个系统。你知道吗
尽管如此,这种情况不太可能很快改变。你知道吗
没有。永远,永远,永远不要依赖字典键的顺序。举例说明:
这是因为一本字典从8个桶开始。因此,0和8在同一个桶中结束,这将立即引起碰撞。顺序取决于先插入哪个。(但也不要依赖于此:初始大小不是保证!)你知道吗
但是,您是正确的,
int
的hash
(在python2.x中)是identity函数(唯一的例外是-1
,它被映射到-2
,以避免与通常的“error return”值冲突)。然而,int
和long
之间的区别有时非常微妙,而且long
使用不同的哈希算法(因为它们可以任意大)。你知道吗不,顺序也取决于钥匙的插入顺序。你知道吗
相关问题 更多 >
编程相关推荐