을 가끔 말 때문에 계산식을 사용하면 계산이 간단하고 빠르기 때문에 먼저 계산을 수행합니다.
a = [('b', 1), ('k',3), ('g',2), ('p',3)]
max_count = max(count for (letter, count) in a)
print max_count
==>
3
당신은 정말 문자에 대한 치료를했다, 또는 일반적으로, 튜플의 요소 중 하나 이상에 대해 걱정하는 경우?
파이썬은 첫 번째 요소로 튜플을 정렬 (또는 비교) 한 다음 첫 번째 요소가 동일하면 두 번째 요소로 정렬하고 비교합니다. 가장 높은 수와 가장 빠른 (가장 낮은) 문자열을 가진 튜플을 원한다. 당신은 당신이 거기를 제외하고
(count, backwards-sorting-letter??)
의 최대이었다 생각 정렬 기준 또는하여 비교하고 싶은 일을, 제공 키 = 기능 최대의(), 분() 또는 분류()를 사용할 수 있습니다 주어진 문자열과 정반대의 방식으로 정렬하는 문자열을 만드는 간단한 방법이 아닙니다. 그러나 최대 값 대신에 다음의 최소값을 찾으십시오.
(-count, letter)
ndpu의 기능은 다음과 같습니다. (letter, count)
을 (-count, letter)
으로 바꾸려면 기능이 필요합니다. 또는 a_tuple
을 (-a_tuple[1], a_tuple[0])
으로 바꾸십시오.
당신이 할 수있는 그런
def the_order_I_want(a_tuple):
return (-a_tuple[1], a_tuple[0])
print min(a, key=the_order_I_want)
=>('k', 3)
또는 당신은 지금 당장 뭔가 반환하는 함수 작성 단지 단축 방법입니다 람다 식을 사용할 수 있습니다
을
print min(a, key=lambda a_tuple: (-a_tuple[1], a_tuple[0]))
=>('k', 3)
S 오 지금 당신은 승리 튜플을 가지고,하지만 당신은 그 자체로 카운트를 ... 원한다면 당신이 당신이 '수락 할 수있는 다른 방법을 사용하여 응답하려고도 경우
result_tuple = min(a, key=lambda t: (-t[1], t[0]))
count = result_tuple[1]
또는
letter, count = min(a, key=lambda t: (-t[1], t[0]))
오 a '는 문자열입니다. 즉, a = 'kasdf asdlkj asdlkj fsdd' – Mazzone
'max (a, key = operator.itemgetter (1)) [1]'은 숫자를 반환합니다 ... – isedev
왜 카운터를 사용하지 않습니까? – njzk2