Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 딕셔너리 리스트를 값의 합 기준으로 정렬하는 방법

딕셔너리(dictionaries)로 이루어진 리스트를 각 딕셔너리 값(value)들의 합을 기준으로 정렬해야 하는 경우가 있습니다. 이럴 때는 내장 함수 sum()을 활용한 별도의 함수를 정의하고, sort() 메서드의 key 매개변수에 전달하면 손쉽게 해결할 수 있습니다.

아래 예제를 통해 구체적인 구현 방법을 살펴보겠습니다.

예제 코드

def sum_value(row):
   return sum(list(row.values()))

my_dict = [{21 : 13, 44 : 35, 34 : 56}, {11 : 75, 70 : 19, 39 : 70}, {1 : 155}, {48 : 29, 17 : 53}]

print("The dictionary is :")
print(my_dict)

my_dict.sort(key = sum_value)

print("The result is :")
print(my_dict)

실행 결과

The dictionary is :
[{34: 56, 44: 35, 21: 13}, {11: 75, 70: 19, 39: 70}, {1: 155}, {48: 29, 17: 53}]
The result is :
[{48: 29, 17: 53}, {34: 56, 44: 35, 21: 13}, {1: 155}, {11: 75, 70: 19, 39: 70}]

코드 설명

  • 정렬 기준 함수 정의: sum_value라는 이름의 함수를 정의합니다. 이 함수는 매개변수로 하나의 딕셔너리(row)를 받으며, .values() 메서드로 모든 값을 추출한 뒤 sum() 함수를 사용해 그 합계를 반환합니다.

  • 데이터 준비: 여러 개의 딕셔너리를 요소로 가지는 리스트를 정의하고, 정렬 전 상태를 콘솔에 출력합니다.

  • 정렬 수행: sort() 메서드를 호출할 때 key 인자에 앞서 정의한 sum_value 함수를 전달합니다. 이렇게 하면 각 딕셔너리의 값 합계를 기준으로 오름차순 정렬이 이루어집니다.

  • 결과 확인: 정렬이 완료된 리스트를 콘솔에 출력하여 최종 결과를 확인합니다.

참고 사항

내림차순으로 정렬하고 싶다면 my_dict.sort(key=sum_value, reverse=True)처럼 reverse=True 옵션을 추가하면 됩니다. 또한 원본 리스트를 변경하지 않고 새로운 정렬된 리스트를 얻고 싶은 경우에는 sorted(my_dict, key=sum_value)를 사용하는 것이 좋습니다.