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

딕셔너리 목록에서 모든 고유 값 추출하기 – Python 프로그램

리스트 안에 여러 개의 딕셔너리가 들어 있을 때, 이들 딕셔너리에 포함된 모든 고유한 값(unique values)을 한 번에 추출해야 하는 경우가 종종 있습니다. 가장 간단한 방법은 각 딕셔너리의 값을 순회한 뒤 set()으로 감싸 중복을 제거하고, 이를 다시 list()로 변환하여 콘솔에 출력하는 것입니다.

예제 코드

아래 예제는 위 과정을 실제로 구현한 것입니다.

my_list = [{'hi': 11, 'there': 28}, {'how': 11, 'are': 31}, {'you': 28, 'Will': 31}]
print('The list is:')
print(my_list)

my_result = list(set(value for dic in my_list for value in dic.values()))

print('The result is:')
print(my_result)

실행 결과

The list is:
[{'there': 28, 'hi': 11}, {'how': 11, 'are': 31}, {'Will': 31, 'you': 28}]
The result is :
[11, 28, 31]

코드 설명

  • 딕셔너리 세 개를 담은 리스트를 정의한 뒤, 콘솔에 그대로 출력합니다.

  • 제너레이터 표현식의 중첩 for문을 사용해 리스트를 순회하면서 각 딕셔너리의 values(), 즉 값에만 접근합니다.

  • set()으로 감싸 중복된 값을 제거하고 고유한 값만 남깁니다.

  • 결과 집합을 list()로 변환하여 변수 my_result에 저장합니다.

  • 최종 결과인 [11, 28, 31]이 콘솔에 출력됩니다.

응용: 값의 등장 순서 유지하기

set()은 해시 기반 자료구조이므로 요소의 순서를 보장하지 않습니다. 값이 원본 데이터에서 처음 나타난 순서를 그대로 유지하고 싶다면 dict.fromkeys()를 활용하면 좋습니다.

my_result = list(dict.fromkeys(value for dic in my_list for value in dic.values()))
print(my_result)   # [11, 28, 31] - 등장 순서대로 출력됩니다.