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)] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |