如何按字符串的长度和字母顺序排序?
问题描述:
我目前是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
更容易使用。
+2
lambda解决方案是敬畏一些! – dmeu 2016-03-18 16:31:07
答
n = ['aaa', 'bbb', 'ccc', 'dddd', 'dddl', 'yyyyy']
for i in reversed(sorted(n, key=len)):
print i
YYYYY dddl DDDD CCC AAA BBB
for i in sorted(n, key=len, reverse=True):
print i
YYYYY DDDD dddl AAA BBB CCC
答
-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']
http://*.com/questions/ 4655591/python-sort-list - 看起来像一个大cla的作业ssroom ... – eumiro 2011-01-11 15:56:27