Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 목록의 객체를 정렬하는 방법은 무엇입니까?


ints, float, string, chars 또는 __cmp__ 메서드를 구현한 기타 클래스 목록을 정렬하려면 목록에서 sort를 호출하기만 하면 정렬할 수 있습니다. 목록을 역순(내림차순)으로 정렬하려면 reverse 매개변수도 전달하면 됩니다.

예시

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 대신 sorted를 사용하십시오.

예시

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__ 메서드가 없는 개체 목록이 있는 경우 키 인수를 사용하여 두 요소를 비교하는 방법을 지정할 수 있습니다. 예를 들어 목록에 사전이 있고 키 크기를 기준으로 사전을 정렬하려는 경우 다음을 수행할 수 있습니다.

예시

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}]

각 항목에 대해 지정된 함수를 호출하고 각 항목에 대해 이 값을 기반으로 정렬합니다. 또한 개체의 속성을 반환하여 개체에 대해 동일한 기능을 지정할 수도 있습니다.