按函数排序Python列表
我有一个函数,它接收一个对象作为参数,然后返回一个数字。我想用这个数字来对我的列表进行排序。
如果我要遍历这个列表,我会这样做:
sorted_list = []
for object in my_list_of_objects:
i = my_number_giving_function(object)
sorted_list.insert(i, object)
我该如何使用 sorted
来得到同样的结果呢?这是我想到的,但我不知道在 '???' 里该填什么。
sorted_list = sorted(my_list_of_objects, key=my_number_giving_function(???))
2 个回答
1
如果你的排序函数需要一个额外的参数,那么使用lambda函数会很有用;否则,直接用函数名就可以了。举个例子,如果你想按照日期对一串字符串(这些字符串是日期时间的表示)进行排序,那么你就需要传入日期的格式。
from datetime import datetime
sorted_list = sorted(my_list, key=lambda x: datetime.strptime(x, '%m/%d/%Y')) # sorted new list
# or call sort() on the list for inplace sorting
my_list.sort(key=lambda x: datetime.strptime(x, '%m/%d/%Y')) # old list is sorted
29
sort(my_list_of_objects, key=my_number_giving_function)
对于排序也是一样,可以查看Python的排序指南