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

파이썬에서 값이 정렬된 순서인 딕셔너리만 골라내기

딕셔너리에 담긴 값들이 오름차순으로 정렬되어 있는 항목만 걸러내야 하는 경우, 파이썬의 'sorted' 메서드리스트 컴프리헨션(list comprehension)을 함께 사용하면 간단하게 해결할 수 있습니다.

코드 예제

다음은 실제 동작 과정을 보여주는 예제입니다.

my_list = [{'python': 2, 'is': 8, 'fun': 10},
   {'python': 1, 'for': 10, 'coding': 9},
   {'cool': 3, 'python': 4}]

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

my_result = [index for index in my_list if sorted(
   list(index.values())) == list(index.values())]

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

실행 결과

The list is :
[{'python': 2, 'fun': 10, 'is': 8}, {'python': 1, 'coding': 9, 'for': 10}, {'python': 4, 'cool': 3}]
The resultant dictionary is :
[{'python': 1, 'coding': 9, 'for': 10}]

코드 설명

  • 먼저 여러 개의 딕셔너리를 요소로 가지는 리스트를 정의하고, 콘솔에 출력합니다.

  • 리스트 컴프리헨션을 사용해 리스트의 각 딕셔너리를 하나씩 순회하면서, index.values()로 해당 딕셔너리의 값들을 추출한 뒤 sorted() 메서드로 정렬합니다.

  • 정렬된 값 목록과 원래 값 목록을 비교하여 두 결과가 같다면, 그 딕셔너리의 값들은 이미 오름차순으로 정렬되어 있는 것입니다. 이 조건을 만족하는 딕셔너리만 새로운 리스트에 담깁니다.

  • 최종 결과는 변수 my_result에 할당됩니다.

  • 마지막으로 이 변수를 콘솔에 출력해 확인합니다.

위 예제에서 두 번째 딕셔너리 {'python': 1, 'for': 10, 'coding': 9}의 값들은 [1, 10, 9]가 아니라 삽입 순서 기준으로 [1, 10, 9]... 즉 값들이 정렬 조건을 만족하는 경우에만 결과에 포함됩니다. 이처럼 sorted()와 리스트 컴프리헨션을 조합하면 복잡한 반복문 없이도 한 줄의 코드로 깔끔하게 데이터를 필터링할 수 있습니다.