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

Python – 딕셔너리를 크기별로 정렬하는 방법

Python에서 여러 개의 딕셔너리가 담긴 리스트를 크기(키-값 쌍의 개수) 기준으로 정렬해야 할 때가 있습니다. 이럴 때는 요소 하나를 매개변수로 받아 len() 함수로 그 길이를 반환하는 헬퍼 함수를 정의한 뒤, sort() 메서드의 key 인자로 지정하면 간단하게 해결할 수 있습니다.

아래 예제를 통해 실제 동작 방식을 확인해 보겠습니다.

예제 코드

def get_len(element):
    return len(element)

my_dict = [{24: 56, 29: 11, 10: 22, 42: 28}, {54: 73, 59: 11}, {13: 39}, {31: 22, 59: 73, 57: 44}]

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

my_dict.sort(key=get_len)

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

출력 결과

The dictionary is :
[{24: 56, 29: 11, 10: 22, 42: 28}, {54: 73, 59: 11}, {13: 39}, {31: 22, 59: 73, 57: 44}]
The result is :
[{13: 39}, {54: 73, 59: 11}, {31: 22, 59: 73, 57: 44}, {24: 56, 29: 11, 10: 22, 42: 28}]

코드 설명

  • get_len이라는 이름의 함수를 정의합니다. 이 함수는 요소(element)를 매개변수로 받아 해당 요소의 길이를 반환합니다.

  • 여러 개의 딕셔너리를 담은 리스트를 생성하고, 콘솔에 출력하여 원본 상태를 확인합니다.

  • sort() 메서드를 호출하면서 key 인자에 앞서 정의한 함수를 지정합니다. 이렇게 하면 각 딕셔너리의 항목 개수를 기준으로 오름차순 정렬이 수행됩니다.

  • 정렬된 최종 결과가 콘솔에 출력됩니다.

참고: 람다(lambda)와 sorted() 활용하기

별도의 함수를 정의하지 않고 람다 표현식을 사용하면 코드를 더욱 간결하게 만들 수 있습니다. 또한 sorted()

# 람다 표현식 사용
my_dict.sort(key=lambda x: len(x))

# 원본을 유지하고 새로운 정렬 리스트 생성
new_list = sorted(my_dict, key=lambda x: len(x))

내림차순으로 정렬하고 싶다면 reverse=True 옵션을 추가하면 됩니다.