2017-11-12 2 views
2

누군가 두 키 사이의 최소값을 선택할 수 있도록 도와 줄 수 있습니까? 나는 사전의 목록이있는 경우 예를 들어, :파이썬에서 두 개의 최소 키 중에서 선택하십시오

results = [ 
    { 
    "model": "short", 
    "score": 34, 
    "alt_score": 1 
    }, 
    { 
    "model": "med", 
    "score": 22, 
    "alt_score": 11 
    }, 
    { 
    "model": "tall", 
    "score": 42, 
    "alt_score": 90 
    }, 
    { 
    "model": "xtall", 
    "score": 83, 
    "alt_score": 15 
    }, 
] 

을 나는 작은 score 또는 alt_score을 가지고 사전을 선택합니다. 나는 개별적으로 최소/score 또는 alt_scorew 사전을 찾는 방법을 알고

min(results, key=lambda x:x['alt_score'])

하지만 한 번에 두 개의 키보고하는 방법을 모르겠어요. 결과가 반환해야

min(results, key=lambda x:x['score', 'alt_score])

또는

min(results, key=lambda x:x['score'] or x:x['alt_score'])

: 내가 좋아하는 뭔가를해야

{ 
    "model": "short", 
    "score": 34, 
    "alt_score": 1 
} 

사전에 감사!

답변

6
min(results, key=lambda x:min(x['score'], x['alt_score'])) 

주면서 항목, score 또는 alt_score에 대한 중 작은 얻을 min()에 대한 내부 호출을 포함하여, 그들에게 거의 모든 표현을 할 수 있습니다.

3

이를 사용할 수 있습니다

min(results, key=lambda x: min(x['score'], x['alt_score'])) 
0
results = [ 
    { 
    "model": "short", 
    "score": 34, 
    "alt_score": 1 
    }, 
    { 
    "model": "med", 
    "score": 22, 
    "alt_score": 11 
    }, 
    { 
    "model": "tall", 
    "score": 42, 
    "alt_score": 90 
    }, 
    { 
    "model": "xtall", 
    "score": 83, 
    "alt_score": 15 
    }, 
] 

print(min(results, key=lambda x:min(x['score'],x['alt_score']))) 
1

min(results, key=lambda x:min(x['score'], x['alt_score']))

는 X 내부 분() 비교를 위해 각각의 점수를 참조 할 필요가있다.

관련 문제