개요
파이썬에서 여러 개의 딕셔너리가 담긴 리스트에서, 각 딕셔너리의 값(value)들을 모두 더한 합계가 특정 기준값 K보다 큰 항목만 골라내야 하는 경우가 종종 있습니다. 이럴 때는 간단한 반복문과 if 조건문만으로도 손쉽게 해결할 수 있습니다.
예제
아래는 전체 구현 예시입니다 −
my_list = [{"Python" : 14, "is" : 18, "fun" : 19},{"Python" : 12, "is": 4, "fun" : 16},
{"Python" : 13, "is": 17, "fun" : 11},{"Python" : 13, "is": 16, "fun" : 13}]
print("The list :")
print(my_list)
K = 35
print("The value for K :")
print(K)
my_result = []
for index in my_list:
sum = 0
for key in index:
sum += index[key]
if sum > K:
my_result.append(index)
print("The result is :")
print(my_result)출력
The list :
[{'Python': 14, 'is': 18, 'fun': 19}, {'Python': 12, 'is': 4, 'fun': 16}, {'Python': 13, 'is': 17, 'fun': 11}, {'Python': 13, 'is': 16, 'fun': 13}]
The value for K :
35
The result is :
[{'Python': 14, 'is': 18, 'fun': 19}, {'Python': 13, 'is': 17, 'fun': 11}, {'Python': 13, 'is': 16, 'fun': 13}]코드 설명
딕셔너리 4개로 구성된 리스트를 정의하고 콘솔에 출력합니다.
기준값이 되는 K를 정의하고 콘솔에 출력합니다.
조건을 만족하는 딕셔너리를 담을 빈 리스트 my_result를 생성합니다.
리스트를 순회하면서 각 딕셔너리마다 합계 변수(sum)를 0으로 초기화합니다.
내부 반복문을 통해 해당 딕셔너리의 모든 키 값을 합계에 누적하여 더합니다.
합계가 K보다 크면 해당 딕셔너리를 결과 리스트에 추가(append)합니다.
모든 순회가 끝난 후 최종 결과 리스트를 콘솔에 출력합니다. 위 예제에서는 두 번째 딕셔너리의 합계가 32로 K인 35보다 작기 때문에 결과에서 제외됩니다.
응용: 리스트 컴프리헨션으로 더 간결하게
위 코드를 파이썬다운(Pythonic) 방식으로 줄이면 다음과 같이 한 줄로 표현할 수도 있습니다.
my_result = [d for d in my_list if sum(d.values()) > K] print(my_result)
내장 함수 sum()과 딕셔너리의 values() 메서드를 함께 사용하면 별도의 내부 루프 없이 동일한 결과를 얻을 수 있어 코드가 훨씬 간결해집니다. 참고로 첫 번째 예제에서 사용한 변수명 sum은 파이썬의 내장 함수와 이름이 겹치므로, 실제 프로젝트에서는 total처럼 다른 이름을 사용하는 것이 안전합니다.