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

Python – 딕셔너리에서 고유한 값 목록 추출하기

여러 개의 딕셔너리가 담긴 리스트에서 중복 없는 고유한(unique) 값들만 추출해야 하는 경우가 종종 있습니다. 이럴 때는 'set' 연산자리스트 메서드를 활용하면, 간단한 반복문과 함께 손쉽게 문제를 해결할 수 있습니다.

예제

아래는 실제 구현 예시입니다 −

my_dictionary = [{'Python' : 11, 'is' : 22}, {'fun' : 11, 'to' : 33}, {'learn' : 22},{'object':9},{'oriented':11}]

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

my_result = list(set(value for element in my_dictionary for value in element.values()))

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

print("The resultant list after sorting is : ")
my_result.sort()
print(my_result)

출력 결과

The dictionary is :
[{'Python': 11, 'is': 22}, {'fun': 11, 'to': 33}, {'learn': 22}, {'object': 9}, {'oriented': 11}]
The resultant list is :
[33, 11, 22, 9]
The resultant list after sorting is :
[9, 11, 22, 33]

동작 원리 설명

  • 딕셔너리 여러 개로 이루어진 리스트를 정의한 뒤, 콘솔에 출력합니다.

  • 중첩된 for문(제너레이터 표현식)을 사용해 각 딕셔너리의 모든 값(value)에 접근합니다.

  • 접근한 값들을 set()으로 변환합니다. set은 중복을 허용하지 않으므로 자동으로 고유한 요소만 남게 됩니다.

  • 결과 집합을 다시 list()로 변환하여 변수에 할당합니다.

  • 변환된 리스트를 콘솔에 출력합니다.

  • 마지막으로 sort() 메서드를 사용해 오름차순으로 정렬한 후, 정렬된 결과를 다시 출력합니다.

핵심 포인트

  • set은 순서를 보장하지 않기 때문에, 출력되는 리스트의 순서는 실행 시점마다 달라질 수 있습니다. 따라서 일관된 순서가 필요하다면 마지막에 sort() 또는 sorted()를 사용하는 것이 좋습니다.

  • 값들이 해시 가능(hashable)한 타입(정수, 문자열 등)일 경우에만 set 변환이 가능합니다. 리스트나 딕셔너리처럼 변경 가능한 객체가 값으로 들어 있다면 다른 방식으로 중복을 제거해야 합니다.