如果我用相同的键创建两个字典,看起来它们返回值的顺序是一样的,即使字典没有顺序。例如,如果我这样做:
dict1 = {"a":1, "b":2, "c":3, "d":4}
dict2 = {"a":10, "b":20, "c":30, "d":40}
zip(dict1.values(), dict2.values())
它给出了“期望的”输出:
[(1, 10), (3, 30), (2, 20), (4, 40)]
为什么会这样?我能一直指望两个具有相同键的字典以相同的方式排列它们的值吗?你知道吗
Tags:
钥匙的顺序通常是一样的,但不能保证。如果没有哈希值冲突,则键将按顺序排列。但是可能会发生碰撞,在这种情况下,插入顺序会影响键的顺序。你知道吗
例如,
1
和65
由于字典的大小是2的幂(至少在我的机器上)而生成哈希冲突。1 % 8 == 65 % 8
,所以这两个键映射到同一个哈希表bucket。你知道吗相同的字典但不同的插入顺序意味着键的顺序不同。你知道吗
这只是一个在我的Python版本上工作的例子。Python语言没有指定键如何映射到散列桶。你知道吗
相关问题 更多 >
编程相关推荐