【问题标题】:Sort a list of strings with a given order in python [duplicate]在python中按给定顺序对字符串列表进行排序[重复]
【发布时间】:2021-02-09 07:02:03
【问题描述】:

我需要对如下所示的字符串列表进行排序:

["green", "red", "yellow", "blue"]

我有一个列表,其中包含很多单词,它们应按应排序的顺序排列:

["red", "orange", "yellow", "green", "teal", "blue", "purple"]

如果有帮助,我还可以将规定正确顺序的列表写入字典,如下所示:

{"red" : 0, "orange" : 1, "yellow" : 2, "green" : 3, "teal" : 4, "blue": 5, "purple" : 6}

最终目标是将字符串列表按正确的顺序排序,如下所示:

["red", "yellow", "green", "blue"]

但我不知道如何使用此顺序对列表进行排序。是否可以使用 sorted() 或 lst.sort() 来完成?我已经研究过这两个函数的关键参数,但不知道在这种情况下如何使用它。

【问题讨论】:

  • 查看排序函数的key=参数
  • 我尝试使用 numpy 方法并使用 dict.items() 从字典中检索词序对..
  • SO = 堆栈溢出。
  • 请从intro tour 重复on topic 和how to ask。 “告诉我如何解决这个编码问题”不是堆栈溢出问题。我们希望您做出诚实的尝试,然后然后就您的算法或技术提出一个具体的问题。 Stack Overflow 无意取代现有的文档和教程。
  • 我在阅读 docs.python.org 上的文档和其他几个讨论 sorted 和 list.sort 方法的页面后来到 SO。也许我以错误的方式提出了这个问题,或者没有找到人们所指的正确文件,这并不意味着我正在试图让某人为我做作业。

标签: python list


【解决方案1】:

使用sorted:

sortorder = {"red" : 0, "orange" : 1, "yellow" : 2, "green" : 3, "teal" : 4, "blue": 5, "purple" : 6}
to_sort = ["green", "red", "yellow", "blue"]

sorted_list = sorted(to_sort, key=lambda col:sortorder[col])
print(sorted_list)

【讨论】:

    【解决方案2】:

    如果它们在您的原始列表中,您可以遍历您的有序列表并将它们附加到新列表中。

    mylist = ["green", "red", "yellow", "blue"]
    myorder = ["red", "orange", "yellow", "green", "teal", "blue", "purple"]
    final = [color for color in myorder if color in mylist]
    #['red', 'yellow', 'green', 'blue']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 2023-01-25
      • 1970-01-01
      • 2018-10-12
      相关资源
      最近更新 更多