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

Python – 리스트 값의 범위가 가장 큰 키 출력하기

개요

딕셔너리에 저장된 리스트 값들 중에서 최댓값과 최솟값의 차이, 즉 범위(range)가 가장 넓은 키를 찾아 출력해야 하는 경우가 있습니다. 이럴 때는 외부 라이브러리 없이 간단한 반복문만으로 손쉽게 해결할 수 있습니다.

예제 코드

다음은 그 구현 방법을 보여주는 예제입니다 −

my_dict = {"pyt" : [26, 12, 34, 21], "fun" : [41, 27,43, 53, 18], "learning" : [21, 30, 29, 13]}

print("The dictionary is :")
print(my_dict)

max_result = 0

for sub, values in my_dict.items():
    max_result = max(max_result, max(values) - min(values))
    if max_result == max(values) - min(values):
        result = sub

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

출력 결과

The dictionary is :
{'pyt': [26, 12, 34, 21], 'fun': [41, 27, 43, 53, 18], 'learning': [21, 30, 29, 13]}
The result is :
fun

코드 설명

  • 딕셔너리를 정의한 뒤 콘솔에 출력합니다.

  • 결과를 저장할 변수를 0으로 초기화합니다.

  • 딕셔너리의 요소들을 하나씩 순회하면서, 각 리스트에서 max() 값과 min() 값의 차이를 계산하고, 이전까지 구한 최댓값과 비교하여 더 큰 값을 저장합니다.

  • 계산된 최댓값이 해당 리스트의 max와 min의 차이와 일치한다면, 그 키를 결과로 지정합니다.

  • 마지막으로 결과를 콘솔에 출력합니다.

더 간결한 대안

max() 함수의 key 인자를 활용하면 위 로직을 한 줄로 줄일 수 있습니다.

result = max(my_dict, key=lambda k: max(my_dict[k]) - min(my_dict[k]))
print(result)  # fun

이 방식은 반복문과 조건문을 직접 작성하지 않아도 되므로 코드가 더 짧고 가독성이 좋아집니다. 다만 각 키마다 max와 min을 두 번씩 계산하므로, 데이터가 매우 클 경우에는 첫 번째 예제처럼 한 번의 순회로 처리하는 편이 효율적입니다.