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

Python으로 딕셔너리 목록에서 각 키의 최대값 구하는 방법

여러 개의 딕셔너리로 이루어진 리스트에서 각 키별 최대값을 구해야 하는 경우, 간단한 반복문을 사용하면 쉽게 해결할 수 있습니다.

예제 코드

아래는 각 키의 최대값을 구하는 방법을 보여주는 예제입니다.

my_list = [{"Hi": 18, "there": 13, "Will": 89},
   {"Hi": 53, "there": 190, "Will": 87}]

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

my_result = {}
for elem in my_list:
   for key, val in elem.items():
      if key in my_result:
         my_result[key] = max(my_result[key], val)
      else:
         my_result[key] = val

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

실행 결과

The list is :
[{'Will': 89, 'there': 13, 'Hi': 18}, {'Will': 87, 'there': 190, 'Hi': 53}]
The result is :
{'Will': 89, 'there': 190, 'Hi': 53}

코드 설명

  • 딕셔너리 여러 개를 담은 리스트를 정의하고, 콘솔에 출력합니다.

  • 결과를 저장할 빈 딕셔너리를 하나 생성합니다.

  • 리스트를 순회하면서 각 딕셔너리의 요소에 접근합니다.

  • 현재 키가 이미 결과 딕셔너리에 존재한다면, 기존 값과 새로운 값을 비교하여 더 큰 값을 해당 키의 인덱스에 저장합니다.

  • 키가 아직 존재하지 않는다면, 현재 값을 그대로 해당 키의 인덱스에 저장합니다.

  • 모든 반복이 끝나면 각 키별 최대값이 담긴 딕셔너리가 콘솔에 출력됩니다.

더 간결한 대안: dict.get() 활용

조건문 없이 dict.get() 메서드를 사용하면 코드를 더욱 간결하게 작성할 수 있습니다.

my_result = {}
for elem in my_list:
   for key, val in elem.items():
      my_result[key] = max(my_result.get(key, val), val)

print(my_result)  # {'Hi': 53, 'there': 190, 'Will': 89}

dict.get(key, default)는 키가 존재하지 않을 경우 기본값(default)을 반환하므로, 별도의 if-else 분기 처리 없이 동일한 결과를 얻을 수 있습니다. 데이터 양이 많거나 가독성을 높이고 싶다면 이 방식을 추천합니다.