使用两个键对列表进行排序

无敌的太阳

我有一个字符串列表,我想根据给定字符串中的点数(。)进行排序,如果这些字符串中的点数相等,则希望它们按其长度排序。无论如何都不是问题)

第一部分很容易实现

given_list.sort(key=dots,reverse=True)

点功能已实现,并且工作正常。

这是我受困的地方,因为如果点数相等,则无法根据其长度对已排序的列表进行排序。

这使我认为我应该以某种方式使用lambda自定义键参数,但是它实际上并没有像应该的那样工作,但是在嵌套列表或字典的情况下却确实如此。

我该如何完成?

安舒尔·戈亚尔(Anshul Goyal)

您可以将自定义lambda函数传递给排序方法作为排序键。

在这种情况下,我使用lambda x: (x.count("."), len(x)),它将创建一个由count和length组成的复合键,并进行相应的排序:

>>> given_list = ["e.x.a", "m.p.l.e", "ex.am.ple"]
>>> sorted(given_list, key=lambda x: (x.count("."), len(x)))
['e.x.a', 'ex.am.ple', 'm.p.l.e']
>>> sorted(given_list, key=lambda x: (x.count("."), len(x)), reverse=True)
['m.p.l.e', 'ex.am.ple', 'e.x.a']

由于您使用.sort,因此您也可以在此处进行同样的操作以对列表进行就地排序:

>>> given_list = ["e.x.a", "m.p.l.e", "ex.am.ple"]
>>> given_list.sort(key=lambda x: (x.count("."), len(x)), reverse=True)
>>> given_list
['m.p.l.e', 'ex.am.ple', 'e.x.a']

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通过两个不同的键对列表进行排序?

替代方法:使用“键功能”按两个参数对列表进行排序

用两个键对Python列表进行排序,但只有一个键相反

Java 使用两个索引对对列表进行排序

使用两个或多个条件对列表的元素进行排序

通过使用linq比较两个列表进行排序?

用两个键对Python字典进行排序

使用由两个列表排序产生的排序来对第三列表进行排序?

蟒蛇。根据两个键和一个字典对2D列表进行排序

使用 Excel 2016 按第三个类别列表对两个费用列表进行排序和排序

根据两个元素对元组列表进行排序

根据两个元素对元组列表进行排序

Python:根据两个属性对列表进行排序

按两个属性对jQuery列表进行排序

对两个不同类对象的列表进行排序

按约束词法对两个变量列表进行排序

如何对具有两个条件的列表进行排序

按两个元素对嵌套列表进行排序

Python通过两个键值对JSON列表进行排序

以相同的方式对两个列表进行排序

如何按值对两个列表的字典进行排序

Groovy-使用两个条件对我的对象列表进行排序

如何使用两个不同的值对Java列表进行排序?

使用两个参数但在不同的代码行中对列表进行排序

如何使用 FOR 循环对两个列表中的数字进行排序

使用两个标准对列表进行排序 - Objective-c

如何使用两个条件在 Python 中对列表进行排序?

如何使用两个过滤器对两个数据字段的列表进行排序

使用两个元键显示和排序