딕셔너리 목록(list of dictionary)에서 각 키에 해당하는 값들의 범위를 구해야 하는 경우가 있습니다. 예를 들어 여러 개의 딕셔너리에 담긴 데이터에서 키별로 최솟값과 최댓값만 추출하고 싶다면, 키에 접근한 뒤 파이썬 내장 함수인 min과 max를 활용하면 손쉽게 해결할 수 있습니다.
예제 코드
다음은 딕셔너리 목록에서 키별 최솟값과 최댓값을 구하는 방법을 보여주는 예제입니다.
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]}반복문 없이 한 줄로 동일한 결과를 얻을 수 있어, 코드 가독성과 유지보수 측면에서 유용합니다. 데이터 분석이나 통계 처리 시 특정 필드의 값 분포 범위를 빠르게 확인할 때 이 기법을 활용해 보세요.