既然你有時會說你只需要計數,我們先做這個,因爲它是最簡單和最快的,使用一個生成器表達式:
a = [('b', 1), ('k',3), ('g',2), ('p',3)]
max_count = max(count for (letter, count) in a)
print max_count
==>3
如果你真的關心的字母,或在一般情況下,關心的元組的元素不止一個?
Python通過第一個元素對元組進行排序(或比較),然後如果第一個元素相等,則由第二個元素等等。您需要具有最高計數和最早(最低)字符串的元組。您可以使用key =功能在MAX(),MIN()或排序()來給你想通過排序或通過比較,你可能會認爲是的
(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)
或者你可以使用lambda表達式,這僅僅是一個縮短的方式來寫立即返回一些功能:
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 ='kasdf asdlkj asdlkj fsdd' – Mazzone
'max(a,key = operator.itemgetter(1))[1]'將返回數字... – isedev
爲什麼不使用計數器呢? – njzk2