如何在python中对集合进行排序?

时间:2019-03-28 02:09:37

标签: python set

我正在尝试通过在python中添加元素来对集合进行排序。我尝试使用sorted()方法,但是它将我的集合转换为列表。我需要对元素进行排序并将其本身打印为集合。我该怎么办?

我尝试使用sorted()方法并获得了一个列表。试图将列表放入一组。但是,没有收到要求的结果

a={}
a=set()
a.add(1)
a.add(-1)
a.add(0)
a.add(4)
a.add(-3)
print(a)

预期结果: {-3,-1,0,1,4} 实际结果: {0,1,4,-3,-1}

1 个答案:

答案 0 :(得分:0)

你不能

只需阅读python documentation

  

Python还包括集合的数据类型。 集合是无序集合,没有重复的元素。基本用途包括成员资格测试和消除重复条目。集合对象还支持诸如并集,交集,差和对称差之类的数学运算。

强调我的想法。

这意味着您将永远无法对集合中的项目进行排序*。

至少,对于“标准”设置,您不能这样做。您最好查找第三方库(默认字典和collections.OrderedDict),因为我不认为python具有内置的有序集,至少在collections中没有。

*好吧,不是从来没有,我知道python的早期版本没有订购字典,现在有了。但是至少在当前版本(python 3.7)中,没有排序的集合。

无论如何,字典的工作方式与集合类似。在字典中,您不能拥有两次相同的键,就像在集合中,您不能拥有两倍的相同项。因此,如果您使用词典的键,而忽略这些键的值,那么collections.OrderedDict可能对您有用。从Python 3.7开始,甚至基础词典(您用dict()制作的基础词典也可以使用。

>>> a = dict()
>>> a[1] = None
>>> a[-1] = None
>>> a[0] = None
>>> a[4] = None
>>> a[-3] = None
>>> print(a.keys())
dict_keys([1, -1, 0, 4, -3])