set是存储不重复元素的无序集合,基于哈希表实现,不保证插入顺序,遍历顺序可能变化,无法通过索引访问;若需有序唯一元素,可用dict.fromkeys()或OrderedDict.fromkeys()。

Python 的 set 是无序的。
什么是 set?
set 是一种集合数据类型,用于存储不重复的元素。它基于哈希表实现,因此可以快速进行添加、删除和查找操作。
set 为什么无序?
从 Python 3.7 开始,red">字典(dict)保持了插入顺序,但 set 并没有这样的保证。虽然在某些 Python 实现中(如 CPython),set 可能表现出某种看似“有序”的行为,但这只是实现细节,不应依赖。
- set 不记录元素的插入顺序
- 每次运行程序时,相同 set 的遍历顺序可能不同(尤其在不同环境中)
- 不能通过索引访问 set 中的元素(如 set[0] 会报错)
如果需要有序的唯一元素集合怎么办?
可以使用以下替代方案:
立即学习“Python免费学习笔记(深入)”;
随着国民健身意识越来越强,各式各样的健身模式不断出现。瑜伽也受到了大众的喜爱,瑜伽行业发展越来越快,作为馆主,你还在微信群里让你的会员使用接龙的方式进行约课吗?你还在用传统的Excel进行排课吗?如果有一款小程序会员点一下就能约课,会不会让你惊喜、意外、激动——没错,瑜伽预约小程序就是为了解决馆主会员约课的痛点应运而生。功能包括瑜伽馆动态,瑜伽常识,瑜伽老师预约,瑜伽课程预约等模块。
- 用 list + set 手动维护顺序(适合小数据)
- 使用 collections.OrderedDict.fromkeys() 来保持插入顺序
- Python 3.7+ 可直接用 dict.fromkeys(),因为 dict 已默认有序
例如:
{x: None for x in [1, 2, 3, 2, 1]} 或 list(dict.fromkeys([1,2,3,2,1])) 可得到有序去重结果。
基本上就这些,set 本身不保证顺序,别指望它按你加进去的顺序排列。










