嗯,干货必须收藏

key是否存在

使用 in 关键字判断key是否存在字典中

d = {"name": "zhang", "age":10}key = "gender"if key in d:pass

不要使用 key in d.keys(), 这是一种画蛇添足的操作,因为d.keys()会返回一个新的列表对象,导致内存最大。

合并字典

>>> x = {'a': 1, 'b': 2}>>> y = {'b': 3, 'c': 4}>>> {**x, **y}{'a': 1, 'b': 3, 'c': 4}

返回新的字典对象,x和y都不会改变,这是使用了PEP448范化解包操作, 如果 x 和 y 有相同的key, 那么y会覆盖x。 如果使用字典的update 方法,将修改原来的对象,例如:

>>> y.update(x)>>> y{'b': 2, 'c': 4, 'a': 1}

迭代字典

z = {'b': 2, 'c': 4, 'a': 1}>>> for key, value in z.items():print(key, value)b 2c 4a 1

也可以直接对字典z进行迭代,每次迭代返回的是key,前面那种操作 z.items()会返回一个新的对象。

>>> for key in z:    print(key, z[key])b 2c 4a 1

字典推导

使用字典推导式快速构建字典对象

>>> fruits = ['apple', 'mango', 'banana','cherry']>>> {f:len(f) for f in fruits}{'apple': 5, 'mango': 5, 'banana': 6, 'cherry': 6}

字典排序

字典本质上是个无序的容器对象(其实Python3.6开始支持有序,不过这个有序是指按照key的添加顺序),如果我们要对字典的 key 或者 value 排序,一般是将其转换为list,再按照key或者value排序。

>>> d = {"c": 3, "a": 1, "f":6, "b": 0}# 按照value排序>>> sorted(d.items(), key=operator.itemgetter(1))[('b', 0), ('a', 1), ('c', 3), ('f', 6)]# 按照key排序>>> sorted(d.items(), key=operator.itemgetter(0))[('a', 1), ('b', 0), ('c', 3), ('f', 6)]>>>

默认值初始化字典

统计列表中每个字母出现的次数

>>> chars = ['a', 'b','c','a','d','c']>>> data = {}>>> for c in chars:...     if c in data:...         data[c]+=1...     else:...         data[c] = 0...>>> data{'a': 1, 'b': 0, 'c': 1, 'd': 0}

可以使用 collections.defaultdict 通过工厂函数提供初始化默认值

chars = ['a', 'b','c','a','d','c']

dd = defaultdict(int)for c in chars:dd[c] += 1

>>>defaultdict(, {'a': 2, 'b': 1, 'c': 2, 'd': 1})

defaultdict 是 dict 的子类,继承了 dict 的所有特性, 如果想要初始值为1 怎么办? 可以用lambda函数来指定

dd = defaultdict(lambda: 1)for c in chars:dd[c] += 1

print(dd)>>> defaultdict(lambda> at 0x01226B28>, {'a': 3, 'b': 2, 'c': 3, 'd': 2})

欢迎关注并置顶公众号,方便第一时间收看最新内容

字典排序 python3_这10个字典操作你必须知道相关推荐

  1. python列表中字典排序_python中字典排序,列表中的字典排序

    python中字典排序,列表中的字典排序 一.使用python模块:operator import operator #首先要导入模块operator x = {1:2, 3:4, 4:3, 2:1, ...

  2. python 按从小到大的顺序组合成一个字典_Python实现字典排序、按照list中字典的某个key排序的方法示例...

    本文实例讲述了python实现字典排序.按照list中字典的某个key排序的方法.分享给大家供大家参考,具体如下: 1.给字典按照value按照从大到小排序 排序 dict = {'a':21, 'b ...

  3. java单词按字典排序_最终Java日志字典:开发人员最常记录的单词是什么?

    java单词按字典排序 最终的记录字典,或者:我们记录的最常见单词是什么? 日志文件是调试应用程序的最常用方法,当解决错误时,它们肯定可以引导我们朝正确的方向发展. 但是,大多数日志文件每天都会增加一 ...

  4. ios 数组中的字典排序_利用数组和字典,实现按指定规则的排序

    大家好,今日我们继续讲解数组与字典解决方案,今日讲解第47讲:利用字典和数组,实现按指定规则的排序.随着字典讲解的深入,我们发现字典真的很神奇,在VBA代码中,给人以十分清爽的感觉,在这套数组与字典解 ...

  5. 字典排序 python3_一步一步学Python3(小学生也适用) 第十二篇: 元组tuple类型

    上一篇我们学习了列表(List),这一篇我们将学习元组(Tuple). 一.Python元组(Tuple) python的元组与列表类似,列表使用方括号[ ],元组使用小括号(). 元组的创建跟列表一 ...

  6. python 字典排序 lambda_Python使用lambda表达式对字典排序操作示例

    本文实例讲述了Python使用lambda表达式对字典排序操作.分享给大家供大家参考,具体如下: lambda表达式也常用于字典排序,既然写到字典排序,那就把按键排序和按值排序都写写好了. 字典按键排 ...

  7. Python字典排序、字典列表排序、嵌套字典排序

    python字典是常用的数据结构,经常用到各种python字典的排序,记录一下不同字典排序的方法. 正常字典排序 正常的字典我们都知道,其排序如下: a={100:1,101:0,102:2}b=so ...

  8. python字典sort_python字典排序

    引子 字典,形如 dic = {'a':1 , 'b':2 , 'c': 3},字典中的元素没有顺序,所以dic[0]是有语法错误的.并且不可以有重复的键值,所以 dic.add['c'] = 4后, ...

  9. python方向键键值_Python实现的字典排序操作示例【按键名key与键值value排序】

    本文实例讲述了Python实现的字典排序操作.分享给大家供大家参考,具体如下: 对字典进行排序?这其实是一个伪命题,搞清楚python字典的定义---字典本身默认以key的字符顺序输出显示---就像我 ...

最新文章

  1. Android上下左右滑动,显示底层布局
  2. 力扣:11盛水最多的容器
  3. 关于动画培养灵感的网站
  4. 16 张图解带你掌握一致性哈希算法
  5. 如何生成二维码及注意事项
  6. 用海康威视摄像头做图像处理问题
  7. iphone如何删除“不可删除”的描述文件?(桌面快捷方式web clib)
  8. 2022-2028全球阿兹夫定片行业市场现状及未来发展趋势
  9. 申请苹果公司版开发者账号实录【99美元,非299美元企业版账号】
  10. safari浏览器找不到服务器怎么办,IOS系统中Safari图标不见了怎么办 safari浏览器不见了找回方法图解...
  11. linux websphere 端口号,Linux环境下配置websphere7.0的一些命令
  12. 毕设题目:Matlab车牌识别
  13. 课后自主练习(排序)1027. 极坐标排序 easy《编程思维与实践》个人学习笔记
  14. 网络文件共享服务 - Samba详解
  15. ios tableView那些事 (九) tableview的删除
  16. 自学mysql还是sql好_都说自学SQL数据库难,是真的吗?
  17. 300道SpringCloud面试题及答案(最新整理)
  18. Error creating bean with name 'servletEndpointRegistrar' defined in class path resource
  19. 总结篇--String、StringBuffer、StringBuilder
  20. win10神州网信政府版如何修改屏保

热门文章

  1. Android自定义类似ProgressDialog效果的Dialog
  2. 网管系统开发经验谈(二)
  3. 使用XPO过程中的代码优化
  4. 未来计算机作文700字,未来的科技作文700字
  5. delphi接口带上请求头是什么意思_python接口自动化(二十)--token登录(详解)...
  6. jpushinterface.setalias的几个参数都是啥意思_很多电工老师傅都不知道,低压断路器基本参数,你懂几个?...
  7. linux 线程编译指令i,linux线程篇之(一):线程的创建与应用
  8. chrome vue.js插件文档_前端开发者必备的40个VSCode插件!
  9. java 字符串加密解密_Java加密解密字符串
  10. 北京工商大学c语言复试试题,2016年北京工商大学计算机与信息工程学院C语言程序设计复试笔试仿真模拟题...