亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

獲取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 關注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號