如何在Python中使用多个条件进行排序?

6

我有一个包括子列表的列表,如下所示:

result = [ ['helo', 10], ['bye', 50], ['yeah', 5], ['candy',30] ]

我希望能够按照以下三个条件进行排序:首先,按子列表中索引2中的最高整数排序,其次按子列表中索引1中单词的长度排序,最后按子列表中索引1中的字母顺序排序。
我尝试过以下操作,但未成功:
finalresult = sorted(result, key=lambda word: (-word[1], len(word), word[0]))

这将按照最高的整数和字母顺序进行排序,但不按单词长度排序。

任何帮助都将不胜感激。谢谢。


当尝试调试像这样的位时,将lambda提升为命名函数可以使问题更容易看到。 Lambdas很简洁,但它们不是最可读的结构。 - msw
1个回答

12
每个元素都是由两个元素组成的列表,按列表长度排序是无用的,因为它们的长度都相同,也许你想按第一个元素的长度排序,所以...
finalresult = sorted(result, key=lambda word: (-word[1], len(word[0]), word[0]))

1
@HellMan 不客气,如果解决了问题,请考虑接受答案 ^^ - lelloman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接