无序集合 - Python中的集合

11 浏览
0 Comments

无序集合 - Python中的集合

抱歉如果这是一个基本的问题,但我正在尝试理解Python中的set类型是如何工作的。\n从文档中得知:\n

\nset对象是一个无序的不重复的可哈希对象的集合。\n作为一个无序的集合,set不记录元素的位置或插入顺序。\n

\n但是如果它们是无序的,为什么我在这个测试中总是得到相同的顺序?我期望得到一些随机的顺序。\n

users_ids = set([1, 1, 2, 3])
>>> print users_ids
set([1, 2, 3])

0
0 Comments

(Unordered collection - sets in python)这个问题的出现的原因是因为在Python中的集合(sets)是无序的,但是在特定的实现中,元素的顺序与插入顺序相关联。然而,这种顺序并没有得到保证,并且在Python 3.X的字典实现中,我们可以看到这种偏差。因此,在处理集合时,不能假设它们是有序的。

解决方法是要注意集合的无序性,并避免在代码中依赖于集合的顺序。如果需要有序的集合,可以使用有序的数据结构,如列表或元组。

在Python 3.3及以后的版本中,字典的实现发生了变化,其中包含了哈希的随机性。因此,即使使用相同的数据和相同的顺序插入,字典也不会保持特定的顺序。

这个的问题还提到了Python 2.X版本中集合的无序性以及插入顺序的保持。在Python 2.7中,集合是无序的,但是在特定实现中,保持了插入顺序。然而,在未来的版本中并不能保证这种顺序的保持。

总结起来,Python中的集合是无序的,不能依赖于它们的顺序。如果需要有序的集合,应该使用其他数据结构。同时,需要注意在不同的Python版本中,集合的实现可能会有所不同,因此在编写代码时要注意这一点。

(以上文章纯为原文翻译,不代表本人观点)

0