여러 개의 딕셔너리가 담긴 리스트에서 각 키에 해당하는 값들 중 최댓값을 구해야 할 때는 간단한 반복문을 활용하면 됩니다.
예제 코드
다음은 그 구현 예시입니다.
my_list = [{"Python": 8, "is": 1, "fun": 9}, {"Python": 2, "is": 9, "fun": 1}, {"Python": 5, "is": 10, "fun": 7}]
print("The list is :")
print(my_list)
result = {}
for dic in my_list:
for key, value in dic.items():
if key in result:
result[key] = max(result[key], value)
else:
result[key] = value
print("The result is :")
print(result)실행 결과
The list is :
[{'Python': 8, 'is': 1, 'fun': 9}, {'Python': 2, 'is': 9, 'fun': 1}, {'Python': 5, 'is': 10, 'fun': 7}]
The result is :
{'Python': 8, 'is': 10, 'fun': 9}
코드 설명
딕셔너리 여러 개로 이루어진 리스트를 정의한 뒤 콘솔에 출력합니다.
결과를 저장할 빈 딕셔너리를 하나 생성합니다.
리스트의 요소(각 딕셔너리)를 순서대로 순회합니다.
items() 메서드로 각 딕셔너리의 키와 값을 하나씩 꺼내 확인합니다.
해당 키가 이미 결과 딕셔너리에 존재하면, 기존 값과 새 값을 비교하여 더 큰 값을 저장합니다.
키가 아직 없다면 현재 값을 그대로 결과 딕셔너리에 넣습니다.
모든 순회가 끝나면 키별 최댓값이 담긴 결과가 콘솔에 출력됩니다.
참고: 더 간결한 방법
위 로직은 딕셔너리 컴프리헨션과 max() 함수를 조합하면 한 줄로도 작성할 수 있습니다.
result = {key: max(d[key] for d in my_list) for key in my_list[0]}이 방식은 첫 번째 딕셔너리의 키를 기준으로 모든 딕셔너리에서 해당 키의 값을 모아 최댓값을 구합니다. 모든 딕셔너리가 동일한 키를 가지고 있을 때 특히 유용합니다.