小编典典

如何按字符串长度和字母顺序排序?

python

我目前是python的新手,并陷入了这个问题,似乎找不到正确的答案。

问题:给出一个单词列表,按长度顺序(最长到最短)返回相同单词的列表,第二个排序标准应按字母顺序。提示:您需要考虑两个功能。

这是我到目前为止所拥有的:

def bylength(word1,word2):
    return len(word2)-len(word1)

def sortlist(a):
    a.sort(cmp=bylength)
    return a

它按长度排序,但我不知道如何将第二个标准应用于这种排序,即按字母顺序降序排列。


阅读 409

收藏
2020-12-20

共1个答案

小编典典

您可以按照以下两个步骤进行操作:

the_list.sort() # sorts normally by alphabetical order
the_list.sort(key=len, reverse=True) # sorts by descending length

Python的排序是稳定的,这意味着当长度相等时,按长度对列表进行排序会使元素按字母顺序排列。

您也可以这样做:

the_list.sort(key=lambda item: (-len(item), item))

通常,您永远不需要cmp它,甚至在Python3中将其删除。key更容易使用。

2020-12-20