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

파이썬 – 딕셔너리 목록에서 키별 값 범위(최솟값·최댓값) 구하기

딕셔너리 목록(list of dictionary)에서 각 키에 해당하는 값들의 범위를 구해야 하는 경우가 있습니다. 예를 들어 여러 개의 딕셔너리에 담긴 데이터에서 키별로 최솟값과 최댓값만 추출하고 싶다면, 키에 접근한 뒤 파이썬 내장 함수인 minmax를 활용하면 손쉽게 해결할 수 있습니다.

예제 코드

다음은 딕셔너리 목록에서 키별 최솟값과 최댓값을 구하는 방법을 보여주는 예제입니다.

my_list = [{"python": 4, "is": 7, "best": 10},{"python": 2, "is": 5, "best": 9},{"python": 1, "is": 2, "best": 6}]

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

my_result = dict()

keys = list(my_list[0].keys())

for my_elem in keys:

    my_result[my_elem] = [min(sub[my_elem] for sub in my_list), max(sub[my_elem] for sub in my_list)]

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

실행 결과

The list is :
[{'python': 4, 'is&#;: 7, 'best': 10}, {'python': 2, 'is': 5, 'best': 9}, {'python': 1, 'is': 2, 'best': 6}]
The result is :
{'python': [1, 4], 'is': [2, 7], 'best': [6, 10]}

코드 설명

  • 먼저 여러 개의 딕셔너리를 포함하는 리스트를 정의하고, 콘솔에 출력하여 확인합니다.

  • 결과를 저장하기 위한 빈 딕셔너리(my_result)를 생성합니다.

  • 첫 번째 딕셔너리에서 keys() 메서드로 키를 가져온 뒤, list()로 변환하여 변수에 저장합니다.

  • 저장된 키들을 하나씩 순회하면서, 해당 키에 대응하는 값들 중 최솟값과 최댓값을 구합니다.

  • 이때 제너레이터 표현식(sub[my_elem] for sub in my_list)을 사용해 리스트 안의 모든 딕셔너리를 순회하며 각 키의 값을 한 번에 처리합니다.

  • 각 키의 [최솟값, 최댓값] 쌍이 새 딕셔너리에 저장되고, 최종 결과가 콘솔에 출력됩니다.

추가 팁: 딕셔너리 컴프리헨션으로 더 간결하게

위 코드는 딕셔너리 컴프리헨션(dictionary comprehension)을 사용하면 더욱 간결하게 작성할 수 있습니다.

my_result = {k: [min(d[k] for d in my_list), max(d[k] for d in my_list)] for k in my_list[0]}

반복문 없이 한 줄로 동일한 결과를 얻을 수 있어, 코드 가독성과 유지보수 측면에서 유용합니다. 데이터 분석이나 통계 처리 시 특정 필드의 값 분포 범위를 빠르게 확인할 때 이 기법을 활용해 보세요.