1、首先介绍一下字典的基本用法
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
print(d.keys())
print(d.values())
print(d.items())
sum = 0
for key, value in d.items():
sum = sum + value
print(key, ':', value)
print('平均分:', sum/len(d))
打印结果如下:
dict_keys(['Bart', 'Lisa', 'Paul', 'Adam'])
dict_values([59, 85, 74, 95])
dict_items([('Bart', 59), ('Lisa', 85), ('Paul', 74), ('Adam', 95)])
Bart : 59
Lisa : 85
Paul : 74
Adam : 95
平均分: 78.25
可以看到,items() 方法把dict对象转换成了包含tuple的list,我们对这个list进行迭代,可以同时获得key和value<
2、再来介绍一下sorted函数
sorted函数,语法:sorted(iterable,key,reverse),sorted一共有 iterable,key,reverse 这三个参数,其中:
- iterable表示可以迭代的对象,例如可以是dict.items()、dict.keys()等,
- key是一个函数,用来选取参与比较的元素,
- reverse则是用来指定排序是倒序还是顺序,reverse=true则是倒序,reverse=false时则是顺序,默认时reverse=false
3、使用sorted函数对字典分别按key和按value进行排序
#coding:utf-8
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
print (sorted(d.items(), key=lambda d: d[0])) # 按照key进行排序
print (sorted(d.items(), key=lambda d: d[1])) # 按照value进行排序
结果:
[('Adam', 95), ('Bart', 59), ('Lisa', 85), ('Paul', 74)]
[('Bart', 59), ('Paul', 74), ('Lisa', 85), ('Adam', 95)]
这里的d.items()实际上是将d转换为可迭代对象,迭代对象的元素为 (‘Adam’,95)、(‘Lisa’,85)、(‘Bart’,59)、(‘Paul’,74),items()方法将字典的元素 转化为了元组,而这里key参数对应的lambda表达式的意思则是选取元组中的第几个元素作为比较参数
4、应用:如何统计数组中出现次数最多的数据,按出现次数由大到小排序
- - 第1步:去重
- - 第2步:计算每个对象在list里面出现的次数,保存为dict
- - 第3步:保存为字典后,按字典的value值大小排序(由于dict是无序的,所以只能用list去排序,把dict的key和value保存为tuplue对象)
ll = ["a", "b", "a", "c", "a", "c", "b", "d", "e", "c", "a", "c"]
# 第1步:去重
duixiang = set(ll) # 先去重,取出计数对象
# 第2步:计算每个对象在list里面出现的次数,保存为dict
dic = {}
for i in duixiang:
dic[i] = ll.count(i) # count()方法用于统计某个元素在列表中出现的次数。
# 第3步:保存为字典后,按字典的value值大小排序
# 由于dict是无序的,所以只能用list去排序,把dict的key和value保存为tuplue对象
ll = sorted(dic.items(), key=lambda x: x[1], reverse=True)
print(ll)
结果:
[('c', 4), ('a', 4), ('b', 2), ('d', 1), ('e', 1)]