我熟悉以下事实:在Python(<3.6)中,字典的顺序在初始化时无法预测,例如:
d = {'B' : 2, 'A' : 1, 'C' : 3}
在我的计算机上创建此字典:
{'A': 1, 'C': 3, 'B': 2}
我的问题是,该命令在初始化后 是否会保持不可预测的状态,或者一旦将其写入内存便已修复。为什么会(不是)呢? (这假设字典在初始化后未写入)
换句话说,如果我跑步
print(d.keys())
print(d.values())
这两个结果将连续匹配吗?
答案 0 :(得分:3)
这两个值总是 匹配。
原因是dict
对象实际上是hashmap
数据结构,并且一旦初始化,就it is now created in memory (RAM) of your computer。因此,除非有什么改变该内存块(例如,您的代码,编译器或某些不可预见的情况,例如基于内存的感染),否则您对内存中该对象的引用(即您的dict
对象)将永远不会改变