>백엔드 개발 >파이썬 튜토리얼 >Python에서 여러 속성을 기반으로 목록을 효율적으로 정렬하려면 어떻게 해야 합니까?

Python에서 여러 속성을 기반으로 목록을 효율적으로 정렬하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-12-11 18:02:13408검색

How Can I Efficiently Sort a List Based on Multiple Attributes in Python?

다중 속성 목록 정렬

단일 속성을 기준으로 목록을 정렬하는 것은 간단합니다. 그러나 여러 속성이 정렬 순서를 지정하는 경우 더 복잡한 접근 방식이 필요합니다.

다음 목록 목록을 고려하세요.

[[12, 'tall', 'blue', 1],
[2, 'short', 'red', 9],
[4, 'tall', 'blue', 13]]

이 목록을 'tall' 또는 '' 기준으로만 정렬 short' 속성은 sorted(s, key = itemgetter(1))를 사용하여 얻을 수 있습니다. 그러나 정렬 순서가 높이와 색상 속성을 모두 기반으로 해야 하는 경우에는 보다 효율적인 솔루션이 필요합니다.

다중 속성 키 기능

여러 속성으로 목록을 작성하는 경우 원하는 정렬 순서를 나타내는 튜플을 반환하는 키 함수를 정의할 수 있습니다. 예를 들어, 다음 키 기능은 먼저 높이를 기준으로 정렬한 다음 색상을 기준으로 정렬합니다.

key = lambda x: (x[1], x[2])

이 키 기능을 사용하면 목록을 다음과 같이 정렬할 수 있습니다.

s = sorted(s, key=key)

또는 itemgetter ()를 사용하면 동일한 결과를 더 효율적으로 얻을 수 있습니다.

import operator
key = operator.itemgetter(1, 2)

이 핵심 기능은 더 빠르고 효과적입니다. Python 함수 호출을 포함하지 않습니다.

직접 정렬

마지막으로 sorted() 대신 sort() 메서드를 사용하고 재할당하면 위의 접근 방식을 더욱 단순화할 수 있습니다. . 이렇게 하면 새 목록을 만들 필요가 없습니다.

s.sort(key=key)

위 내용은 Python에서 여러 속성을 기반으로 목록을 효율적으로 정렬하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.