【问题标题】:How to rearrange values in a "set"? Python [duplicate]如何重新排列“集合”中的值? Python [重复]
【发布时间】:2019-11-12 11:31:42
【问题描述】:

我想将 'y' 值放在集合 {'e', 'y', 'u'} 的末尾。

我已尝试删除该值,然后在末尾重新添加:

last_vowels = 'y'
vowels = {'e', 'y', 'u'}
vowels.remove(last_vowels)
vowels.add(last_vowels)
print(vowels)

我也尝试将其转换为列表,然后在末尾附加'y',然后将其转换回“set”类型。

vowels.remove(last_vowels)
vowels_list = list(vowels)
vowels_list.append(last_vowels)
vowels = set(vowels_list)
print(vowels)

从我读到的“set”类型没有索引。

所以我想知道是否有办法重新排列“集合”?

【问题讨论】:

  • 如果您查看sets 的文档,明确指出集合是独特元素的无序集合
  • 如果你有所有的元音并想保持一个顺序,你可以查看frozenset。注意,frozensets 是不可变的,所以 add remove 不可用。
  • 从这个答案:stackoverflow.com/questions/1867861/…,我知道可以操纵dictionary 的顺序(按照您最初创建它的顺序)。所以也许你可以使用字典的键作为你想要的set(并给出一些任意值)。
  • @Gооd_Mаn 对不起,我将frozensets 和 SortedSets 混为一谈。我会写一个答案。
  • 因为我不能再写答案了,你可以看看这个:SortedSet。为了保持顺序,您可以在列表中执行排序,并在创建SortedSet时将list.index作为key

标签: python python-3.x python-2.7


【解决方案1】:

集合是无序的。这意味着不能操纵元素的顺序。

【讨论】:

    【解决方案2】:

    如果您只是出于输出原因对其进行排序(我假设您希望按字母顺序排列),或者将其设置为删除重复项的集合,然后不介意将其作为列表,那么您可以这样做:

    my_set = {'e', 'y', 'u'}
    print(sorted(my_set))
    > ['e', 'u', 'y']
    

    【讨论】:

    • 感谢您的回答,但我需要将其保留为“集合”。
    • 为什么?如果您详细说明您需要它的用途以及订购它的原因,那么提供帮助会更容易。在您的示例中,您只是打印它,没有理由需要设置。
    猜你喜欢
    • 1970-01-01
    • 2020-02-18
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多