gpt4 book ai didi

python - 键为数字时的字典顺序

转载 作者:太空宇宙 更新时间:2023-11-04 08:11:14 25 4
gpt4 key购买 nike

我们知道常规的 Python 字典是无序的,但是当键是自然数集时呢? hash 函数似乎是一个恒等函数,当定义域是一组自然数时,迭代类似 x = {0:'a', 1:'b', 2 :'c'} 似乎产生了键的自然顺序,也就是 0、1、2..

那么这种行为可以依赖吗?

(是的,我知道 OrderedDict)

编辑:

这是我的具体用法,或者至少这捕获了我正在看的东西的精神。

x = dict((a, chr(a)) for a in range(10))

我在 x 中:
打印我

这似乎保持秩序。

最佳答案

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

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

发生这种情况是因为字典从 8 个桶开始。因此,0 和 8 最终会出现在同一个桶中,这将立即导致碰撞。顺序取决于先插入哪个。 (但也不要依赖于此:初始大小不能保证!)

但是,您是正确的,int(在 Python 2.x 中)的 hash 是身份函数(唯一的异常(exception)是 - 1,它映射到 -2 以避免与通常的“错误返回”值发生冲突)。然而,intlong 之间的区别有时非常微妙,long 使用不同的哈希算法(因为它们可以任意大) .

关于python - 键为数字时的字典顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22055320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com