2024-04-26 10:52:51 发布
网友
我有一个对象列表,其中有一个函数,它对几个成员变量进行一些计算并返回一个值。我想根据这个返回值对列表进行排序。在
我已经找到了如何按成员变量对对象列表进行排序,但我想让它们保持私有(_variable_name)。在
_variable_name
有没有一种简单的方法可以实现这一点,类似于直接按对象成员对列表排序的方法?在
只需将key参数用于sorted()函数或list.sort()方法:
key
sorted()
list.sort()
sorted_list = sorted(list_of_objects, key=function_that_calculates)
为function_that_calculates中的每个条目调用function_that_calculates,其结果通知排序。在
function_that_calculates
如果您的意思是每个对象都有一个方法,那么可以使用lambda或{a1}对每个元素调用该方法:
lambda
或者
from operator import methodcaller sorted_list = sorted(list_of_objects, key=methodcaller('method_name'))
请注意,在Python中,没有私有属性,排序函数仍然可以访问它。前导下划线只是惯例。因此,可以再次使用lambda或使用^{} object按特定属性排序:
sorted_list = sorted(list_of_objects, key=lambda obj: obj._variable_name)
from operator import attrgetter sorted_list = sorted(list_of_objects, key=attrgetter('_variable_name'))
只需将
key
参数用于sorted()
函数或list.sort()
方法:为
function_that_calculates
中的每个条目调用function_that_calculates
,其结果通知排序。在如果您的意思是每个对象都有一个方法,那么可以使用
^{pr2}$lambda
或{a1}对每个元素调用该方法:或者
请注意,在Python中,没有私有属性,排序函数仍然可以访问它。前导下划线只是惯例。因此,可以再次使用} object 按特定属性排序:
lambda
或使用^{或者
相关问题 更多 >
编程相关推荐