python – 按字母顺序排列具有相同计数的元素
发布时间:2020-12-20 13:17:17 所属栏目:Python 来源:网络整理
导读:Python Collection Counter.most_common(n)方法返回前n个元素及其计数.但是,如果两个元素的计数相同,我如何返回按字母顺序排序的结果? 例如:对于像:BBBAAACCD这样的字符串,对于“最常见的2个”元素,我希望结果是指定的n = 2: [('A',3),('B',('C',2)] 并
|
Python Collection Counter.most_common(n)方法返回前n个元素及其计数.但是,如果两个元素的计数相同,我如何返回按字母顺序排序的结果?
例如:对于像:BBBAAACCD这样的字符串,对于“最常见的2个”元素,我希望结果是指定的n = 2: [('A',3),('B',('C',2)]
并不是: [('B',('A',2)]
请注意,虽然A和B具有相同的频率,但A在结果列表中位于B之前,因为它按字母顺序出现在B之前. [('A',2)]
我怎样才能做到这一点? 解决方法
这里有两个问题:
>在考虑排除重复的前n个最常见值时包括重复项. 迄今为止,所有解决方案都没有解决第一个问题.您可以将堆队列与itertools 然后使用自定义键排序. from collections import Counter
from heapq import nlargest
from toolz import unique
x = 'BBBAAACCD'
c = Counter(x)
n = 2
nth_largest = nlargest(n,unique(c.values()))[-1]
def sort_key(x):
return -x[1],x[0]
gen = ((k,v) for k,v in c.items() if v >= nth_largest)
res = sorted(gen,key=sort_key)
[('A',2)]
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
