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

标签 python set

这个问题在这里已经有了答案:





Sorting a set of values

(1 个回答)


2年前关闭。




我正在尝试通过向其中添加元素来对 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}

最佳答案

你不能

刚读 python documentation :

Python also includes a data type for sets. A set is an unordered collection with no duplicate elements. Basic uses include membership testing and eliminating duplicate entries. Set objects also support mathematical operations like union, intersection, difference, and symmetric difference.



强调我的。

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

至少,对于“普通”集合,你不能。您应该更好地寻找第三方库(默认字典和 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])

关于python - 如何在python中对集合进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55389165/

相关文章:

python - 找到几个单词,如果删除一个字母将打印出这两个单词

python - 将集合列表转换为集合集合(以查找唯一元素)

c# - 我应该使用哪个 C# 集合来进行可变和可重复的任务管理?

python - 使用 wkhtmltopdf 将 MathJax 转换为 pdf 会产生太小的数学

python - 从 Python 中的两个替代源输入?

java - 集合操作的复杂性

java - 如何获得两个 map Java之间的差异?

c++ - 从 vector<T> 创建一组字符串

python - Pandas 的每日频率计数

python - Python中的空元组有什么用途吗?