본문 바로가기
Language_/python

[python] sorting Key Functions총 정리

by 낭람_ 2020. 7. 4.
반응형

[python 공식 문서]

 

Sorting HOW TO — Python 3.8.4rc1 documentation

Sorting HOW TO Author Andrew Dalke and Raymond Hettinger Release 0.1 Python lists have a built-in list.sort() method that modifies the list in-place. There is also a sorted() built-in function that builds a new sorted list from an iterable. In this documen

docs.python.org

 

sort와 sorted는 정렬 시 비교 기준이 되는 key parameter를 가질 수 있다.

sorted("This is a test string from Andrew".split(), key=str.lower)

 

['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']

 

위의 코드는 공백을 기준으로 문자열을 나누어서 정렬하고 리스트로 변환을 한다.

 

key에 str.lower가 되어있어 대소문 구분없이 정렬이 된다.

 

sorted("This is a test string from Andrew".split())

 

['Andrew', 'This', 'a', 'from', 'is', 'string', 'test']

 

만약 key = str.lower가 없다면 대문자 먼저 정렬을 한 뒤 소문자로 정렬을 하게 된다.

 

또한 이 key를 사용하는 기술은 정확히 한번만 호출되기 때문에 빠르다는 장점이 있다.

 This technique is fast because the key function is called exactly once for each input record

 

일반적인 패턴은 객체의 인덱스 중 일부를 키로 사용하여 복잡한 객체를 정렬할 수 있다.

 

student_tuples = [
    ('john', 'A', 15),
    ('jane', 'B', 12),
    ('dave', 'B', 10),
]
sorted(student_tuples, key=lambda student: student[2])

 

[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

 

위와 같이 코드를 사용하면 student[2]를 기준으로 정렬을 하므로 숫자에 관련되어 정렬이 진행된다.

 

반응형

댓글