如何在Python中对列表中的对象进行排序?
要对整数,浮点数,字符串,字符或已实现__cmp__方法的任何其他类的列表进行排序,只需在列表上调用sort即可对其进行排序。如果要以相反的顺序对列表进行排序(降序),则只需传入反向参数即可。
示例
my_list = [1, 5, 2, 6, 0] my_list.sort() print(my_list) my_list.sort(reverse=True) print(my_list)
输出结果
这将给出输出-
[0, 1, 2, 5, 6] [6, 5, 2, 1, 0]
由于元组是不可变的,因此它们没有可直接在其上调用的就地排序功能。您必须使用已排序的函数,该函数将返回已排序的列表。如果不想对列表进行排序,请使用sorted代替列表类方法sort。
示例
my_list = [1, 5, 2, 6, 0] print(sorted(my_list)) print(sorted(my_list, reverse=True))
输出结果
这将给出输出-
[0, 1, 2, 5, 6] [6, 5, 2, 1, 0]
如果您有一个没有在类中实现__cmp__方法的对象列表,则可以使用key参数指定如何比较2个元素。例如,如果列表中有字典,并且想要根据键的大小对字典进行排序,则可以执行以下操作:
示例
def get_my_key(obj): return obj['size'] my_list = [{'name': "foo", 'size': 5}, {'name': "bar", 'size': 3}, {'name': "baz", 'size': 7}] my_list.sort(key=get_my_key) print(my_list)
输出结果
这将给出输出-
[{'name': 'bar', 'size': 3}, {'name': 'foo', 'size': 5}, {'name': 'baz', 'size': 7}]
它将调用为每个条目指定的函数,并根据每个条目的此值进行排序。您还可以通过返回对象的属性来为该对象指定相同的功能。