为了账号安全,请及时绑定邮箱和手机立即绑定

获取python集合计数器中已排序重复元素的索引

获取python集合计数器中已排序重复元素的索引

holdtom 2023-03-16 11:25:23
我已经对收集计数器进行了排序,并且我正在尝试获取其索引为1 因为和 的banana频率相同,但它给出 2。或者索引必须为 2 而不是 3。cherrybananamango我的代码:from collections import Counter    fruits = ['apple','cherry', 'apple','banana','banana','cherry','apple', 'mango']fruits_frequency = Counter([item for items, c in Counter(fruits).most_common() for item in [items] * c])print(fruits_frequency)mapping = dict((item[1][0], item[0]) for item in enumerate(fruits_frequency.most_common()))print(mapping["banana"])输出:Counter({'apple': 3, 'cherry': 2, 'banana': 2, 'mango': 1})2
查看完整描述

3 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

您可以将itertools.groupby与字典理解一起使用


mapping = {x[0]: idx for idx, group in enumerate(groupby(fruits_frequency.items(), lambda x: x[1])) for x in group[1]}

print(mapping)

输出:


{'apple': 0, 'cherry': 1, 'banana': 1, 'mango': 2}


查看完整回答
反对 回复 2023-03-16
?
墨色风雨

TA贡献1853条经验 获得超6个赞

mapping = dict((item[1][0], item[0]) for item in enumerate(sorted(fruits_frequency.most_common(),  key=lambda y: (y[1], y[0]))))

fruits_frequency.most_common()通过使用排序的关键参数对零件进行排序:key=lambda y: (y[1], y[0])基本上首先按出现次数和字母顺序排序。


查看完整回答
反对 回复 2023-03-16
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

如果我明白你想要得到什么,你可能想得到一个不同值的排序列表,然后找到其中的值fruit_frequencies的索引。bananas


像这样:


distinct_values = sorted(list(set(fruits_frequency.values())), reverse=True)

print(distinct_values.index(mapping["banana"]))


查看完整回答
反对 回复 2023-03-16
  • 3 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信