代码之家  ›  专栏  ›  技术社区  ›  bers

根据理解构成的词典中词条的顺序

  •  -1
  • bers  · 技术社区  · 2 年前

    我读过Python的 dict s按插入顺序排列。但是,以下示例代码打印 字典 看似随机的顺序因运行而异:

    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。

    0 回复  |  直到 2 年前
        1
  •  1
  •   Frank Yellin    2 年前

    事实上,你看到的是故意的行为。Python使用的值为 PYTHONHASHSEED 以确定字符串、字节字符串和日期的哈希值。如果不设置它,每次运行时它都会得到一个(希望不同)随机值 Python 因此 hash('abc') 将在单个Python执行中为您提供一个一致的值,但如果您重新启动Python,则可能会为您提供不同的值。

    您正在创建一组字符串。集合没有保证的顺序,它们的内部实现在很大程度上依赖于哈希值。