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

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

按出現次數對列表進行排序并刪除重復項

按出現次數對列表進行排序并刪除重復項

幕布斯6054654 2021-09-25 16:49:14
例如,我有以下列表,其中每個元素的出現次數是:apple - 3banana - 4orange - 2列表:["apple", "apple", "banana", "orange", "orange", "banana", "banana", "apple", "banana"]我需要按流行度對列表進行排序而沒有重復,因此預期結果將是:["banana", "apple", "orange"]我想創建一個以每個元素為鍵的字典,遍歷列表,然后在每次找到鍵時添加 +1,所以我最終會得到一個示例字典:dic = {"apple": 3, "banana": 4, "orange":2}但是有點卡住了如何在沒有欺騙的情況下對列表本身進行排序..提前致謝。編輯:謝謝大家,我不知道計數器。節日快樂!
查看完整描述

3 回答

?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

您可以使用 acollections.Counter及其most_common方法:


from collections import Counter


lst = ["apple", "apple", "banana", "orange", "orange", "banana", "banana", "apple", "banana"]


res = [k for k, _ in Counter(lst).most_common()]

# ['banana', 'apple', 'orange']


查看完整回答
反對 回復 2021-09-25
?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

使用計數器:


from collections import Counter


data = ["apple", "apple", "banana", "orange", "orange", "banana", "banana", "apple", "banana"]


counts = Counter(data)

result = sorted(counts, key=counts.get, reverse=True)

print(result)

輸出


['banana', 'apple', 'orange']


查看完整回答
反對 回復 2021-09-25
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

根據原始列表的計數對集合進行排序。編輯:正如評論中所指出的,如果您有很多候選人,您可能想要使用其他解決方案,多次調用列表的計數方法不是最佳選擇。


a = ["apple", "apple", "banana", "orange", "orange", "banana", "banana", "apple", "banana"]

sorted(set(a), key = lambda x: a.count(x), reverse = True) #reverse for descending

結果:


['banana', 'apple', 'orange']


查看完整回答
反對 回復 2021-09-25
  • 3 回答
  • 0 關注
  • 249 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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