当键是数字时的字典顺序

2024-09-28 22:30:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我们知道常规的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: 函数in编辑用法for字典顺序密钥
3条回答

不,你不能依赖这种行为。它是一个实现细节,可以从一个版本的Python更改到下一个版本,甚至可以从一个系统更改到下一个系统。你知道吗

尽管如此,这种情况不太可能很快改变。你知道吗

没有。永远,永远,永远不要依赖字典键的顺序。举例说明:

>>> {0: 1, 8: 2}
{0: 1, 8: 2}
>>> {8: 1, 0: 2}
{8: 1, 0: 2}

这是因为一本字典从8个桶开始。因此,0和8在同一个桶中结束,这将立即引起碰撞。顺序取决于先插入哪个。(但也不要依赖于此:初始大小不是保证!)你知道吗

但是,您是正确的,inthash(在python2.x中)是identity函数(唯一的例外是-1,它被映射到-2,以避免与通常的“error return”值冲突)。然而,intlong之间的区别有时非常微妙,而且long使用不同的哈希算法(因为它们可以任意大)。你知道吗

不,顺序也取决于钥匙的插入顺序。你知道吗

相关问题 更多 >