小白学 Python(13):基础数据结构(字典)(下)
人生苦短,我选Python
前文传送门
字典内置函数 & 方法
(如果是来看表情包的,可以退出去了,本篇无表情包)
字典提供了很多内置方法对字典进行操控。
老规矩,一边看代码一边介绍。
dict.keys()
作用: 返回一个迭代器,可以使用 list() 来转换为列表,该列表包含所有的 key。
dict1 = {'name': 'geekdigging', 'age': 2}
print(dict1.keys())
print(list(dict1.keys()))
print(type(list(dict1.keys())))
结果如下:
dict_keys(['name', 'age'])
['name', 'age']
<class 'list'>
dict.values()
作用: 返回一个迭代器,可以使用 list() 来转换为列表,该列表包含所有的 value 。
print(dict1.values())
print(list(dict1.values()))
print(type(list(dict1.values())))
结果如下:
dict_values(['geekdigging', 2])
['geekdigging', 2]
<class 'list'>
dict.items()
作用: 以列表返回可遍历的(键, 值) 元组数组。
print(dict1.items())
print(list(dict1.items()))
print(type(list(dict1.items())))
结果如下:
dict_items([('name', 'geekdigging'), ('age', 2)])
[('name', 'geekdigging'), ('age', 2)]
<class 'list'>
dict.get(key, default=None)
作用: 返回指定键的值,如果值不在字典中返回 default(None) 值。
print(dict1.get('name'))
print(dict1.get('geekdigging'))
结果如下:
geekdigging
None
因为 geekdigging
并不是字典中的 key ,所以返回了默认值 None 。
dict.pop(key[,default])
作用: 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。
print(dict1.pop('age'))
print(dict1)
结果如下:
2
{'name': 'geekdigging'}
dict.setdefault(key, default=None)
作用: 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为 default 。
dict1.setdefault('age')
print(dict1)
结果如下:
{'name': 'geekdigging', 'age': None}
dict.update(dict2)
作用: 把字典 dict2 的键/值对更新到 dict 里。
dict2 = {'sex': 'male'}
dict1.update(dict2)
print(dict1)
结果如下:
{'name': 'geekdigging', 'age': None, 'sex': 'male'}
dict.clear()
作用: 删除字典内所有元素。
注意: 删除字典内所有元素,并非删除字典。
dict2.clear()
print(dict2)
结果如下:
{}
dict.copy()
作用: 返回一个字典的浅复制。
注意: 这里的 copy 是浅 copy ,有编程经验的同学估计理解起来并无难度。无经验的同学且听我慢慢道来,浅拷贝本质上拷贝的是一个引用,并非拷贝了整个内容,举例子的话就好比我有一个苹果,并且浅拷贝了一个给小明,我咬了一口我的苹果,但是小明发现他的苹果也被咬了一口。
dict3 = {'name': 'geekdigging', 'age': [1, 2, 3]}
# 浅拷贝: 引用对象
dict4 = dict3
print(id(dict3))
print(id(dict4))
# 浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用
dict5 = dict3.copy()
dict3['age'].remove(1)
print(dict3)
print(dict5)
print(id(dict3))
print(id(dict5))
结果如下:
2418990911064
2418990911064
{'name': 'geekdigging', 'age': [2, 3]}
{'name': 'geekdigging', 'age': [2, 3]}
2418990911064
2418991599688
这个示例理解稍有费劲儿,不着急,慢慢品,细品。
如果我想全都深 copy ,怎么做呢?
可以引入 copy 模块实现。
import copy
dict3 = {'name': 'geekdigging', 'age': [1, 2, 3]}
dict6 = copy.deepcopy(dict3)
dict3['age'].remove(1)
print(dict3)
print(dict6)
print(id(dict3))
print(id(dict6))
结果如下:
{'name': 'geekdigging', 'age': [2, 3]}
{'name': 'geekdigging', 'age': [1, 2, 3]}
2418991602168
2418991602008
初次接触的同学,以上两个示例并不好理解,如果在理解上有问题的可以在公众号留言问我。
老生常谈再多 BB 一句,请各位同学亲自动手实践一下示例代码。
示例代码
本系列的所有代码小编都会放在代码管理仓库 Github 和 Gitee 上,方便大家取用。
小白学 Python(13):基础数据结构(字典)(下)的更多相关文章
- 小白学 Python(12):基础数据结构(字典)(上)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(15):基础数据结构(集合)(下)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(10):基础数据结构(列表)(下)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(14):基础数据结构(集合)(上)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(17):基础数据类型(函数)(下)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(24):Excel 基础操作(下)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(9):基础数据结构(列表)(上)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(8):基础流程控制(下)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 小白学 Python(11):基础数据结构(元组)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
随机推荐
- Ubuntu+docker+gitlab安装和使用
以前自己写的代码都是在本地,因为都是自己一个人维护,现在交给团队维护了,所以想着搭建一个gitlab 1,拉镜像 安装非常简单 docker search gitlab 搜索镜像 docker pu ...
- .netCore+Vue 搭建的简捷开发框架 (4)--NetCore 基础
书接上文:上一节中,我们已经实现Services 层.(https://www.cnblogs.com/xuzhencheng/p/11424751.html) 但是具体要如何将服务依赖注入进来呢?继 ...
- redis实践 —— redisReply简析
redisReply 定义如下: /* This is the reply object returned by redisCommand() */ typedef struct redisReply ...
- Ng项目安装到指定盘符
全局安装 1.node.js 2.cnpm 3.typeScript 4.ng-cli 指定安装: 1.首先在想要的盘符内新建一个名字 例: D盘中新建一个angualr的文件夹 2.在开始菜单中输入 ...
- 【柠檬班】jmeter 不写代码,秒秒钟提取动态列表最后一个值
在用jmeter做接口测试时,我们经常会遇到,一个接口返回一个json串,在这个json串中,某个节点的值是一个列表,而且这个列表的长度是动态变化的.如: 获取用户列表,用户信息是个列表,类似的接 ...
- python语言程序设计基础(嵩天)第三章课后习题部分个人练习
p69: *题3.5: 源代码: (1)print(30-3**2+8//3**2*10) 答案:21 (2)print(3*4**2/8%5) 答案:1.0 (3)print(2** ...
- 什么是回流(重排 reflow)?什么是重绘(repaint)?如何减少回流、重绘?
什么是回流(重排 reflow)? 回流(重排 reflow):对DOM树进行渲染,只要修改DOM或修改元素的形状大小,就会触发reflow,reflow的时候,浏览器会使已渲染好受到影响的部分失效, ...
- asp.net core learn
.NET Core WebApi RESTful规范 RESTful API 最佳实践 理解RESTful架构 接口版本控制 Support multiple versions of ASP.NET ...
- 网络游戏开发-客户端4 关于Egret的本地坐标和舞台坐标
因为最近公司事情比较多,所以没怎么更新博客. 不过咱们这个游戏还是在继续往下写. 今天晚上打算写斗地主的出牌动画,遇到一个问题,就是关于本地坐标和舞台坐标的计算问题 在Egret官网的解释是:x 和 ...
- JZOJ10004 列车调度
[JZOJ100041]列车调度 Description Input Output Sample Input Sample1: 3 1 2 3 Sample2: 9 1 3 2 4 8 6 9 5 7 ...