여러 개의 딕셔너리로 이루어진 리스트에서 각 키별 최대값을 구해야 하는 경우, 간단한 반복문을 사용하면 쉽게 해결할 수 있습니다.
예제 코드
아래는 각 키의 최대값을 구하는 방법을 보여주는 예제입니다.
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 분기 처리 없이 동일한 결과를 얻을 수 있습니다. 데이터 양이 많거나 가독성을 높이고 싶다면 이 방식을 추천합니다.