>

사전이 있습니다

d = {1:'1.112',2:'3.084',3:'6.2',4:'not_valid',5:'0.235'}

내 사전에서 가장 작은 값을 가진 키를 찾고 싶습니다.

min(d, key=d.get) 를 사용하여 쉽게 얻을 수 있습니다.  , 내 모든 값이 int 또는 float 인 경우

그러나 내 값의 데이터 유형은 str 입니다.

'not_valid' 값을 무시하고 싶습니다  최소 숫자, 즉 0.235 를 찾으십시오. 그리고 그에 해당하는 키 = 5


  • 답변 # 1

    float 로의 변환을 시도하는 자신 만의 함수를 만들 수 있습니다 , 그리고 반환 math.nan ( 'not_valid'의 경우처럼) 실패하는 경우 그런 다음 min 에 해당 함수를 전달하여 이전과 동일한 기술을 사용하십시오.   key

    import math
    def to_float(s):
        try:
            return float(s)
        except ValueError:
            return math.nan
    >>> min(d, key=lambda i: to_float(d[i]))
    5
    
    

  • 답변 # 2

    이를 해결할 수있는 방법은 다음과 같습니다 :

    def custom_key(k):
      if d[k] == 'not_valid':
        return float('inf')
      return float(d[k])
    
    

    그래 :

    >>> min(d, key=custom_key)
    5
    
    

  • 이전 javascript - 반응 - 상태에서 객체 배열을 setstate로 업데이트
  • 다음 Get Property within an Object within a Dictionary - 사전 내의 객체 내에서 속성 가져 오기 - 목표 c