我有一个列表a = [('b',1),('k',3),('g',2),('p',3)...]第一个元组是一个字母,并且第二个是字母出现频率的计数。我试图找到一个字母的最大出现次数(可以不止一个,即k = 3和p = 3),然后返回最接近“ a”的字母。
我当前的逻辑是:找到最高计数->创建另一个列表,仅追加具有第二个元组=最高计数的元素->对列表进行排序->返回第一个元素的第一个元组。
如果有更好的方法可以在Python中做到这一点(而且我敢肯定有),我会很高兴!
但是,无论哪种方式,在Python中找到最高计数的最有效方法是什么?
目前,我正在使用以下方法,但是它返回一个列表元素而不是数字。
max(a, key=operator.itemgetter(1))
只需使用2个元组的键将您的列表排序,并反转计数和char:
>>> a = [('b', 1), ('k',3), ('g',2), ('p',3)]
>>> sorted(a, key=lambda t:(-t[1], t[0]))
[('k', 3), ('p', 3), ('g', 2), ('b', 1)]
或使用min
相同的键:
>>> min(a, key=lambda t:(-t[1],t[0]))
('k', 3)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句