여러 개의 딕셔너리가 담긴 리스트에서 중복 없는 고유한(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 변환이 가능합니다. 리스트나 딕셔너리처럼 변경 가능한 객체가 값으로 들어 있다면 다른 방식으로 중복을 제거해야 합니다.