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)

 
 
 

前言

面试题:如何统计数组中出现次数最多的数据,按出现次数由大到小排序
这个排序看似简单,涉及到的基础知识点还是很多的,真正写起来并不容易

备注:本篇是以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)

猜你喜欢

转载自www.cnblogs.com/jason89/p/9165104.html
今日推荐