如何在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}]

它将调用为每个条目指定的函数,并根据每个条目的此值进行排序。您还可以通过返回对象的属性来为该对象指定相同的功能。

以上是 如何在Python中对列表中的对象进行排序? 的全部内容, 来源链接: utcz.com/z/327053.html

回到顶部