Python 字典常用函数---排序函数sorted()、defaultdict 字典

使用sorted函数进行排序

sorted(iterable,key,reverse)

sorted(iterable,key,reverse)
sorted一共有iterable,key,reverse这三个参数;

  • iterable表示可以迭代的对象,例如可以是dict.items()、**dict.keys()**等
  • key是一个函数,用来选取参与比较的元素,
  • reverse则是用来指定排序是倒序还是顺序,reverse=true则是倒序,
    reverse=false时则是顺序,默认时reverse=false。

初始化字典

dict_data={6:9,10:5,3:11,8:2,7:6}

1、对字典按键(key)进行排序: key = lambda x:x[0]

对字典按键(key)进行排序(默认由小到大)

test_data_0 = sorted(dict_data.keys())

输出结果

print(test_data_0) #[3, 6, 7, 8, 10]

[3, 6, 7, 8, 10]

test_data_1=sorted(dict_data.items(),key=lambda x:x[0])

输出结果

print(test_data_1) # [(3, 11), (6, 9), (7, 6), (8, 2), (10, 5)]

[(3, 11), (6, 9), (7, 6), (8, 2), (10, 5)]

2、对字典按值(value)进行排序: key = lambda x:x[1]

#对字典按值(value)进行排序(默认由小到大)

test_data_2 = sorted(dict_data.items(),key=lambda x:x[1])

#输出结果

print(test_data_2) #[('8', 2), ('10', 5), ('7', 6), ('6', 9), ('3', 11)]
print(dict_data)

[(‘8’, 2), (‘10’, 5), (‘7’, 6), (‘6’, 9), (‘3’, 11)]
{6: 9, 10: 5, 3: 11, 8: 2, 7: 6}

test_data_3 = sorted(dict_data.items(),key=lambda x:x[1],reverse=True)

#输出结果

print(test_data_3) #[('3', 11), ('6', 9), ('7', 6), ('10', 5), ('8', 2)]

defaultdict

认识defaultdict:
当我使用普通的字典时,用法一般是dict={},添加元素的只需要dict[element] =value即,调用的时候也是如此,dict[element] = xxx,但前提是element字典里,如果不在字典里就会报错,如:
在这里插入图片描述

这时defaultdict就能排上用场了,defaultdict的作用是在于,当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值,这个默认值是什么呢,下面会说

如何使用defaultdict
defaultdict接受一个工厂函数作为参数,如下来构造:

dict =defaultdict( factory_function)

这个factory_function可以是list、set、str等等,作用是当key不存在时,返回的是工厂函数的默认值,比如list对应[ ],str对应的是空字符串,set对应set( ),int对应0,如下举例:

from collections import defaultdict

dict1 = defaultdict(int)
dict2 = defaultdict(set)
dict3 = defaultdict(str)
dict4 = defaultdict(list)
dict1[2] ='two'

print(dict1[1])
print(dict2[1])
print(dict3[1])
print(dict4[1])

输出:

0
set()

[]

在这里插入图片描述

参考:链接:https://www.jianshu.com/p/bbd258f99fd

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值