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

파이썬으로 딕셔너리 리스트에서 키별 최댓값 계산하기

여러 개의 딕셔너리가 담긴 리스트에서 각 키에 해당하는 값들 중 최댓값을 구해야 할 때는 간단한 반복문을 활용하면 됩니다.

예제 코드

다음은 그 구현 예시입니다.

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]}

이 방식은 첫 번째 딕셔너리의 키를 기준으로 모든 딕셔너리에서 해당 키의 값을 모아 최댓값을 구합니다. 모든 딕셔너리가 동일한 키를 가지고 있을 때 특히 유용합니다.