파이썬 sorted() 정렬 조건, 다중 조건

HYEJIN·2022년 6월 3일
0

파이썬 문법

목록 보기
1/2

sort()

<list>.sort(key = <function>, reverse = <bool>)

  • 원본 자체를 수정하며, 반환값 없음
  • sort 함수는 inplace 함수로 아무것도 리턴하지 않고, 기존 리스트 자체에서 정렬이 이루어짐

sorted()

sorted( <list> , key = <function> , reverse = <bool>)

  • iterable 자료형에 대해서 정렬 가능하며, list 자료형으로 return
  • sorted 함수는 기존의 리스트는 건드리지 않고 정렬된 새로운 리스트를 변환함 >> 정렬 결과를 다른 변수에 따로 받고 싶은경우 유용하게 쓰임
a = [10,2,3,1]
a.sort()
a.sort(reverse=True) # 역순(내림차순)
b = [10,2,3,1]
c = sorted(b)
d = sorted(b,reverse=True)
	print(b) # [10,2,3,1]
    print(c) # [1,2,3,,10]
    print(d) #[10,3,2,1]

2중 리스트에서의 정렬

key 값으로 정렬

key = lamda x : x[0]
>> 0번째 원소를 기준으로 오름차순 정렬

key = lamda x : -x[0]
>> 0번째 원소를 기준으로 내림차순 정렬 / 내림차순을 원할경우 마이너스(-) 사용

.sort()함수 사용

array = [[50, "apple"], [30, "banana"] , [400, "melon"]]
print(array)
>>>>> [[30, 'banana'], [50, 'apple'], [400, 'melon']]

sorted()함수 사용

print(sorted(array, key = lambda x: x[0]))
>>>>> [[30, 'banana'], [50, 'apple'], [400, 'melon']]

2중 리스트에서의 다중조건 정렬

key가 여러개 일 때,

array = [("A", 18, 300000) , ("F", 24, 10000), ("T", 24, 200000),("Q",24,5000000), ("B", 70, 5000)]
# (<이름> , <나이> , <재산>) 이라고 하면

위의 리스트처럼 정렬해야 할때 고려해야 많은 경우가 있을때는 튜플형식으로 key = lambda x: (x[0] , x[2]) lambda식을 세워주면 된다.
x[0]을 우선순위로 정렬 후, x[0]이 같은 경우 x[1] 기준으로 다시 정렬하게 된다.

0개의 댓글