1. 程式人生 > >python筆記17-字典如何按value排序

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

odi pytho tca Coding count 簡單 body ted nbsp

前言

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

備註:本篇是以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筆記17-字典如何按value排序