python筆記17-字典如何按value排序


前言

面試題:如何統計數組中出現次數最多的數據,按出現次數由大到小排序
這個排序看似簡單,涉及到的基礎知識點還是很多的,真正寫起來並不容易

備注:本篇是以python3.6講解的,python2會多一個cmp參數,cmp函數在python3上已經丟棄了
cmp(x,y) 函數用於比較2個對象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。

保存數據

1.首先應該提出隊列里面有多少個數據,做去重處理,去重最快的辦法計算用到set集合了

a = ["a", "b", "a", "c", "a", "c", "b", "d", "e", "c", "a", "c"]

# set集合去重
duixiang = set(a)  # 先去重,取出計數對象
print(duixiang)

2.然后計算每個對象再list里面出現的次數,可以保存為字典格式,一一對應

# 保存為dict,一一對應
d = {}
for i in duixiang:
    d[i] = a.count(i)

字典按value排序

1.保存為字典后,按字典的value值大小排序,這個才是本題的難點,由於dict是無序的,所以只能用list去排序,把dict的key和value保存為tuplue對象

# 對字典按value排序
a = sorted(d.items(), key=lambda x: x[1], reverse=True)
print(a)

參考代碼:

# coding:utf-8

# 作者:上海-悠悠
a = ["a", "b", "a", "c", "a", "c", "b", "d", "e", "c", "a", "c"]

# set集合去重
duixiang = set(a)  # 先去重,取出計數對象

# 保存為dict,一一對應
d = {}
for i in duixiang:
    d[i] = a.count(i)


# 對字典按value排序
a = sorted(d.items(), key=lambda x: x[1], reverse=True)
print(a)

python自動化交流 QQ群:779429633


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM