我目前是python的新手,并陷入了这个问题,似乎找不到正确的答案。
问题:给出一个单词列表,按长度顺序(最长到最短)返回相同单词的列表,第二个排序标准应按字母顺序。提示:您需要考虑两个功能。
这是我到目前为止所拥有的:
def bylength(word1,word2): return len(word2)-len(word1) def sortlist(a): a.sort(cmp=bylength) return a
它按长度排序,但我不知道如何将第二个标准应用于这种排序,即按字母顺序降序排列。
您可以按照以下两个步骤进行操作:
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更容易使用。
cmp
key