a = dict(((1,3),(0,-1),(3,21)))
m = max(a, key=a.get)
왜 최대 값에 해당하는 키가 반환되는지 설명 할 수 있습니까? 그것은 꽤 오랫동안 저를 곤란하게 만들었습니다. 감사!파이썬 사전의 최대 값에 해당하는 키
a = dict(((1,3),(0,-1),(3,21)))
m = max(a, key=a.get)
왜 최대 값에 해당하는 키가 반환되는지 설명 할 수 있습니까? 그것은 꽤 오랫동안 저를 곤란하게 만들었습니다. 감사!파이썬 사전의 최대 값에 해당하는 키
사전 "a"는 파이썬에서 반복 가능한 구조입니다. for x in a
으로 반복하면 사전의 키를 반복합니다.
두 번째 줄에서 max 함수는 반복 가능한 객체 (a)와 선택적 "key"함수의 두 인수를 취합니다. Key 함수는 a에서 항목의 값을 평가하는 데 사용됩니다. 가장 큰 것은 리턴됩니다.
예 : 단지 "키"가 출력되는 것을 여기
>>> a = dict(((1,3),(0,-1),(3,21)))
>>> for x in a:
... print x #output the value of each item in our iteration
...
0
1
3
참고. 우리가이 "get"키를 넘길 때 ...
>>> a.get(0)
-1
>>> a.get(1)
3
>>> a.get(3)
21
우리는 각 키의 값을 얻습니다. 이제 max가 어떻게 작동하는지보십시오.
>>> b=[2, 3, 5, 6, 4]
>>> max(b)
6
>>> def inverse(x):
... return 1.0/x
...
>>> max(b, key=inverse)
2
최대 (기본적으로)는 반복 가능한 목록에서 가장 큰 숫자를 찾습니다. "inverse"함수를 정의하면, inverse(item)
이 가장 큰 b에서 가장 큰 항목을 반환합니다.
max(a, key=a.get)
가
a.get(item)
의 값이 가장 큰하는
a
에
item
를 반환하는 것입니다 것을 알 수있다. 즉 가장 큰 값에 대응하는 키이다.
key
매개 변수의 작동 방식을 묻는 질문이 있으십니까? 사전에있는 모든 요소에 적용되는 호출 가능 함수를 사용합니다. 여러분의 사전의 경우, 단순히이 수행합니다
a.get(1) # 3
a.get(0) # -1
a.get(3) # 21
max
다음 비교 값으로 키 함수의 결과를 사용하므로 분명 가장 높은 값을 반환하는 요소를 선택합니다 즉 3
정말 흥미로워지면 람다 함수를 사용해 볼 수도 있습니다 :'max (a, key = lambda x : a [x])' – ProdigySim