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)
首先,利用刚刚 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)