我现在是python的新手并且遇到了这个问题,似乎找不到合适的答案.
问题:给定一个单词列表,按照长度(最长到最短)的顺序返回一个具有相同单词的列表,第二个排序标准应该是按字母顺序排列的.提示:你需要考虑两个功能.
这是我到目前为止:
def bylength(word1,word2):
    return len(word2)-len(word1)
def sortlist(a):
    a.sort(cmp=bylength)
    return a
它按长度排序,但我不知道如何将第二个标准应用于此类,即按字母顺序降序.
Joc*_*zel 126
您可以通过以下两个步骤执行此操作:
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更容易使用.
n = ['aaa', 'bbb', 'ccc', 'dddd', 'dddl', 'yyyyy']
for i in reversed(sorted(n, key=len)):
    print i
yyyyy dddl dddd ccc bbb aaa
for i in sorted(n, key=len, reverse=True):
     print i
yyyyy dddd dddl aaa bbb ccc
| 归档时间: | 
 | 
| 查看次数: | 70730 次 | 
| 最近记录: |