You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中Set的异常表现:为何有时呈现有序状态?

为什么Python集合会出现看似有序的奇怪现象?

在使用Python的Set集合时,我发现了一种看似排序的奇怪现象。我知道Set本应是无序的,但第一个整数Set(thisSetIntegers)输出却从小到大排列;当元素数量超过4个时(thisSetIntegers1),集合不再有序;若使用String而非Integer,集合内的值则呈随机顺序。这是为什么?

代码示例

thisSetIntegers = {4,15,2}
print(thisSetIntegers)

thisSetIntegers1 = {15,4,2,3,100,9,7}
print(thisSetIntegers1)

thisSetString = {"Python", "Java", "C#"}
print(thisSetString)

输出结果

{2, 4, 15}
{2, 3, 100, 4, 7, 9, 15}
{'Python', 'Java', 'C#'}

原因解释

  • Python的集合底层基于哈希表实现,本身不保证元素的存储和输出顺序,你看到的“有序”只是哈希表存储时的偶然结果。
  • 小整数的哈希值等于自身,当集合元素数量较少时,哈希表的槽位刚好能按数值顺序容纳这些元素,所以输出看起来是升序排列。
  • 当元素数量超过哈希表的初始容量(通常是4),哈希表会触发扩容机制,元素会根据哈希值重新分配存储位置,这时输出顺序就不再有规律。
  • 字符串的哈希值计算逻辑和整数不同,不是自身的值,因此它们在哈希表中的存储位置更分散,输出顺序看起来就是随机的。

内容的提问来源于stack exchange,提问作者Petr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 06:16:20