딕셔너리 다중 조건으로 정렬하기

sorted와 lambda함수를 사용하여 dictionary를 여러 키로 정렬이 가능하다.

# 코드
dictlist = [
    {'height' : 170, 'weight' : 60, 'name' : '홍길동'},
    {'height' : 160, 'weight' : 90, 'name' : '이몽룡'},
    {'height' : 165, 'weight' : 55, 'name' : '성춘향'},
    {'height' : 180, 'weight' : 70, 'name' : '대조영'},
    {'height' : 180, 'weight' : 85, 'name' : '김개똥'},
    {'height' : 165, 'weight' : 65, 'name' : '아무개'}
]

# height 높은 순, weight 낮은 순
sorted_dict = sorted(dictlist, key = lambda x : (-x['height'], x['weight']))

# 결과
#[{'height': 180, 'weight': 70, 'name': '대조영'},
# {'height': 180, 'weight': 85, 'name': '김개똥'},
# {'height': 170, 'weight': 60, 'name': '홍길동'},
# {'height': 165, 'weight': 55, 'name': '성춘향'},
# {'height': 165, 'weight': 65, 'name': '아무개'},
# {'height': 160, 'weight': 90, 'name': '이몽룡'}]

lambda함수를 사용하여 다중 조건을 설정할 수 있다.

첫번째 키인 height를 기준으로 내림차순으로 정렬한 후, 값이 같은 경우 두번째 키인 weight를 기준으로 오름차순으로 정렬한다.

이때, column 앞에 -를 붙이면 내림차순(5, 4, 3, 2, 1), 아무것도 안붙이면 오름차순(1, 2, 3, 4, 5)으로 정렬된다.