在 Python 3 中先按长度排序字符串数组,然后按字母顺序排序

Por*_*Man 4 python arrays sorting python-3.x

如何首先按单词的长度(最长到最短),然后按字母顺序对python中的数组进行排序?

这就是我的意思:

我有这个清单: WordsArray = ["Lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing", "elit", "sed", "do", "eiusmod", "tempor", "incididunt"]

我想输出这个: ['consectetur', 'adipiscing', 'incididunt', 'eiusmod', 'tempor', 'dolor', 'ipsum', 'Lorem', 'amet', 'elit', 'sed', 'sit', 'do']

我已经可以使用print (sorted(WordsArray))以下字母顺序排序:

['Lorem', 'adipiscing', 'amet', 'consectetur', 'do', 'dolor', 'eiusmod', 'elit', 'incididunt', 'ipsum', 'sed', 'sit', 'tempor']
Run Code Online (Sandbox Code Playgroud)

sha*_*678 5

首先,利用刚刚 sorted不按字母顺序排序,看看你输出......我敢肯定L没有来过a。您目前正在做的是区分大小写的排序。

您可以使用Key Function执行不区分大小写的排序,如下所示:

>>> words_list = ["Lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing", "elit", "sed", "do", "eiusmod", "tempor", "incididunt"]
>>> sorted(words_list, key=str.lower)
['adipiscing', 'amet', 'consectetur', 'do', 'dolor', 'eiusmod', 'elit', 'incididunt', 'ipsum', 'Lorem', 'sed', 'sit', 'tempor']
Run Code Online (Sandbox Code Playgroud)

然后,您可以像下面那样修改Key Function,先按长度排序,然后按字母顺序排序:

>>> def custom_key(str):
...   return -len(str), str.lower()
... 
>>> sorted(words_list, key=custom_key)
['consectetur', 'adipiscing', 'incididunt', 'eiusmod', 'tempor', 'dolor', 'ipsum', 'Lorem', 'amet', 'elit', 'sed', 'sit', 'do']
Run Code Online (Sandbox Code Playgroud)

  • @KaushikNP您的意思是当您不按字母顺序排序时,它不会按字母顺序排序?令人震惊。 (2认同)