如何按字符串长度和反字母顺序排序列表?
给定一个单词列表,返回一个按照单词长度排序的新列表(从长到短),如果长度相同,则按字母顺序排序。提示:你需要考虑两个函数。
这是我目前的代码:
def bylength(word1,word2):
return len(word2)-len(word1)
def sortlist(a):
a.sort(cmp=bylength)
return a
这段代码可以按照长度排序,但我不知道怎么加上第二个排序条件,也就是按字母顺序从高到低排序。
6 个回答
3
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们刚开始学习编程的时候。比如,有人可能会在使用某个特定的功能时,发现它的表现和预期的不一样。这种情况很常见,通常需要我们仔细检查代码,看看哪里出了问题。
有时候,解决问题的方法可能很简单,只需要调整一下代码,或者查看一下文档,了解这个功能的具体用法。其他时候,可能需要在网上查找相关的讨论,看看别人是怎么解决类似的问题的。
总之,遇到问题时,不要着急,慢慢分析,寻找解决方案。编程就是一个不断学习和解决问题的过程。
-Sort your list by alpha order, then by length.
See the following exmple:
>>> coursesList = ["chemistry","physics","mathematics","art"]
>>> sorted(coursesList,key=len)
['art', 'physics', 'chemistry', 'mathematics']
>>> coursesList.append("mopsosa")
>>> sorted(coursesList,key=len)
['art', 'physics', 'mopsosa', 'chemistry', 'mathematics']
>>> coursesList.sort()
>>> sorted(coursesList,key=len)
['art', 'mopsosa', 'physics', 'chemistry', 'mathematics']
7
n = ['aaa', 'bbb', 'ccc', 'dddd', 'dddl', 'yyyyy'] for i in reversed(sorted(n, key=len)): print i
for i in sorted(n, key=len, reverse=True): print i
yyyyy dddl dddd ccc bbb aaa
yyyyy dddd dddl aaa bbb ccc
192
你可以按照下面的两个步骤来做:
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
要简单得多。