2024-06-17 07:51:33 发布
网友
我需要根据给定的两个标准对单词列表进行排序。我需要返回一个按长度顺序(从长到短)相同单词的列表,第二个排序标准应该是字母顺序
示例列表:
l = ['aa','aaa','aaaa','b','bb','z','ccc']
期望输出:
['aaaa', 'aaa', 'ccc', 'aa', 'bb', 'b', 'z']
您只需要对sort进行一次调用,因为Python会自动按字典顺序对元组进行排序。也就是说,如果你让Python比较两个元组,它会按照它们的第一个元素对它们排序,除非那些比较相等,在这种情况下,它会按照它们的第二个元素对它们排序,除非那些比较相等,在这种情况下
sort
您希望通过减去元素的长度然后按字母顺序对元素列表进行排序,因此您希望字符串s的键是元组(-len(s), s)。因此:
s
(-len(s), s)
>>> l = ['aa','aaa','aaaa','b','bb','z','ccc'] >>> sort_key = lambda s: (-len(s), s) >>> l.sort(key=sort_key) >>> l ['aaaa', 'aaa', 'ccc', 'aa', 'bb', 'b', 'z']
这里的关键字是“stable sorting algorithm”。考虑两个稳定的排序函数:
为了获得所需的顺序,您会按什么顺序组合它们
正如其他人所提到的,第一个排序函数可以这样调用:
list.sort(key=len, reverse=True)
第二个排序函数可以这样调用:
list.sort()
这应该足以编写一个完整的解决方案
如果以正确的方式组合函数,则应获得以下结果:
>>> l = ['aaa', 'fff', 'bbb', 'ddd', 'e', 'cccc'] # ... sorting functions combined in the right way ... >>> l ['cccc', 'aaa', 'bbb', 'ddd', 'fff', 'e']
在Python中,list的排序方法有一个键,可以用来指定排序标准。 对于您描述的问题,我将使用该键,并按如下方式进行正常排序
>>> l = ['aa','aaa','aaaa','b','bb','z','ccc'] >>> l.sort(key=len,reverse=True) >>> l ['aaaa', 'ccc', 'aaa', 'bb', 'aa', 'z', 'b'] >>> l.sort() >>> l ['aa', 'aaa', 'aaaa', 'b', 'bb', 'ccc', 'z'] >>>
您只需要对
sort
进行一次调用,因为Python会自动按字典顺序对元组进行排序。也就是说,如果你让Python比较两个元组,它会按照它们的第一个元素对它们排序,除非那些比较相等,在这种情况下,它会按照它们的第二个元素对它们排序,除非那些比较相等,在这种情况下您希望通过减去元素的长度然后按字母顺序对元素列表进行排序,因此您希望字符串
s
的键是元组(-len(s), s)
。因此:设计
这里的关键字是“stable sorting algorithm”。考虑两个稳定的排序函数:
为了获得所需的顺序,您会按什么顺序组合它们
实施
正如其他人所提到的,第一个排序函数可以这样调用:
第二个排序函数可以这样调用:
这应该足以编写一个完整的解决方案
结果
如果以正确的方式组合函数,则应获得以下结果:
在Python中,list的排序方法有一个键,可以用来指定排序标准。 对于您描述的问题,我将使用该键,并按如下方式进行正常排序
相关问题 更多 >
编程相关推荐