【问题标题】:Why is the element order changing once a sorted list converted to a set in Python?python - 为什么将排序列表转换为Python中的集合后元素顺序会发生变化?
【发布时间】:2020-01-21 03:52:09
【问题描述】:

为什么当我将列表转换为集合时顺序会发生变化?如何在 Python 中实现排序集结果?

string = 'test'
result = sorted([character for character in string])
print(result)
#output
['e', 's', 't', 't']
print(set(result))
#output
{'t', 'e', 's'}

我正在尝试制作这个:

{'e', 's', 't'}

【问题讨论】:

  • 您不能为此使用 Set。
  • 乔,你知道我是怎么做到的吗?
  • @RaminMelikov 检查我的答案
  • 你的目标是什么?独特的价值观?还有什么?
  • @U10-Forward-ReinstateMonica 我检查了答案,但答案产生了一个列表而不是一个集合。

标签: python list set


【解决方案1】:

根据docs:

集合对象是不同hashable 对象的无序集合。常见用途包括成员资格测试、从序列中删除重复项以及计算数学运算,例如交、并、差和对称差。

你应该在这里使用:

from collections import OrderedDict
string = 'test'
result = sorted([character for character in string])
print(list(OrderedDict.fromkeys(result)))

或者,如果您的版本 >= 3.7,则字典已排序,因此您可以使用:

string = 'test'
result = sorted([character for character in string])
print(list(dict.fromkeys(result)))

【讨论】:

  • 但在这两种情况下它都会产生一个列表而不是一个集合。
  • @RaminMelikov 如果你想要一套,那是不可能的。
猜你喜欢
  • 2013-03-25
  • 2021-08-15
  • 2021-12-25
  • 2021-09-12
  • 1970-01-01
  • 1970-01-01
  • 2016-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多