我读过Python的 dict s按插入顺序排列。但是,以下示例代码打印 字典 看似随机的顺序因运行而异:
dict
字典
DICT = {"1D Hist": 1, "1D Plot": 2} print(DICT) dict = {entry for entry in DICT} print(dict)
为什么?这是有意的吗?
C:\Code>python bug.py {'1D Hist': 1, '1D Plot': 2} {'1D Plot', '1D Hist'} C:\Code>python bug.py {'1D Hist': 1, '1D Plot': 2} {'1D Hist', '1D Plot'}
我使用的是Pyton 3.11.4。
事实上,你看到的是故意的行为。Python使用的值为 PYTHONHASHSEED 以确定字符串、字节字符串和日期的哈希值。如果不设置它,每次运行时它都会得到一个(希望不同)随机值 Python 因此 hash('abc') 将在单个Python执行中为您提供一个一致的值,但如果您重新启动Python,则可能会为您提供不同的值。
PYTHONHASHSEED
Python
hash('abc')
您正在创建一组字符串。集合没有保证的顺序,它们的内部实现在很大程度上依赖于哈希值。