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

Python – 딕셔너리 목록을 키 값의 i번째 인덱스 문자 기준으로 정렬하는 방법

리스트에 담긴 여러 개의 딕셔너리를 특정 키(K)에 해당하는 값의 'i'번째 인덱스 문자를 기준으로 정렬해야 하는 경우, 파이썬의 내장 함수인 sorted 메서드와 람다(lambda) 함수를 함께 사용하면 간단하게 해결할 수 있습니다.

람다 함수는 각 딕셔너리를 인자로 받아 해당 딕셔너리에서 키 K의 값을 꺼낸 뒤, 그 문자열에서 i번째 문자를 추출하여 정렬 기준으로 반환합니다.

예제

아래는 실제 동작을 보여주는 예제 코드입니다.

my_list = [{"Python" : "Best", "to" : "Code"},
   {"Python" : "Good", "to" : "Learn"},
   {"Python" : "object", "to" : "cool"},
   {"Python" : "oriented", "to" : "language"}]

print("The list is : " )
print(my_list)

K = "Python"
print("The value of K is ")
print(K)

i = 2
print("The value of i is :")
print(i)

my_result = sorted(my_list, key = lambda sub: sub[K][i])

print("The resultant list is : ")
print(my_result)

출력 결과

The list is :
[{'Python': 'Best', 'to': 'Code'}, {'Python': 'Good', 'to': 'Learn'}, {'Python': 'object', 'to': 'cool'},
{'Python': 'oriented', 'to': 'language'}]
The value of K is
Python
The value of i is :
2
The resultant list is :
[{'Python': 'oriented', 'to': 'language'}, {'Python': 'object', 'to': 'cool'}, {'Python': 'Good', 'to':
'Learn'}, {'Python': 'Best', 'to': 'Code'}]

코드 설명

  • 딕셔너리 네 개로 구성된 리스트를 생성한 후 콘솔에 출력합니다.

  • 정렬 기준이 될 키 이름 'K'를 정의하고 콘솔에 출력합니다.

  • 기준이 될 인덱스 번호 'i'를 정의하고 콘솔에 출력합니다.

  • sorted 메서드에 람다 함수를 key 인자로 전달하여 리스트를 정렬합니다. 이때 람다 함수는 각 딕셔너리에서 sub[K][i], 즉 키 K의 값 문자열에서 i번째 문자를 추출해 비교 기준으로 사용합니다.

  • 정렬된 결과는 새로운 변수 my_result에 할당됩니다.

  • 최종적으로 해당 변수를 콘솔에 출력합니다.

정렬 결과 분석

i = 2일 때 각 키 값의 세 번째 문자는 다음과 같습니다.

  • 'oriented' → 'i'

  • 'object' → 'j'

  • 'Good' → 'o'

  • 'Best' → 's'

문자의 아스키(ASCII) 코드 순서대로 오름차순 정렬되므로 'i' < 'j' < 'o' < 's' 순서가 되어, 위와 같은 결과 리스트가 만들어집니다. 내림차순으로 정렬하고 싶다면 sorted 함수에 reverse=True 옵션을 추가하면 됩니다.