【愚公系列】2021年12月 Python教学课程 07-字典Dict
文章目录
- 一、字典Dict
- 二、字典相关操作
- 1.创建字典
- 2.访问字典
- 3.增加和修改
- 4.删除字典元素、清空字典和删除字典
- 5.字典的重要方法
- 6.遍历字典
一、字典Dict
Python 的字典数据类型是基于 hash 散列算法实现的,采用键值对(key:value)的形式,
根据 key 的值计算 value 的地址,具有非常快的查取和插入速度。
字典是无序的,包含的元素个数不限,值的类型也可以是其它任何数据类型!
字典的 key 必须是不可变的对象,例如整数、字符串、bytes 和元组,但使用最多的还
是字符串。列表、字典、集合等就不可以作为 key。同时,同一个字典内的 key 必须是
唯一的,但值则不必。
字典可精确描述为不定长、可变、无序、散列的集合类型。
字典的每个键值对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})
中 ,例如:
dic = {key1 : value1, key2 : value2 }
二、字典相关操作
1.创建字典
方式一: 直接创建
>>> dic1 = {'name': 'Tom', 'age': 40}
方式二: 动态创建
>>> dic2 = {}
>>> dic2['name'] = 'Tom'
>>> dic2['age'] = 40
方式三: 关键字创建
>>> dic3 = dict(name='Tom', age=40)
方式四: 键/值对创建
>>> dic4 = dict((['name', 'Tom'], ['age', 40]))
>>> dic4
方式五: 通过 fromkeys 方法来创建
>>> dic5 = dict.fromkeys(['a', 'b'], 0)
>>> dic5
方式六: zip 创建字典
>>> dic6 = dict(zip(['a', 'b'], [1, 2]))
>>> dic6
zip()
函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然
后返回由这些元组组成的对象。我们可以使用 list() 转换来输出列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。
利用 * 号操作符,可以将元组解压为列表。
2.访问字典
字典是集合类型,不是序列类型,因此没有索引下标的概念,更没有切片的说法。字典
采用把相应的键放入方括号内获取对应值的方式取值。
dic = {'Name': 'Jack','Age': 7, 'Class': 'First'}
print ("dic['Name']: ", dic['Name'])
print ("dic['Age']: ", dic['Age'])
如果访问字典里没有的键,会抛出异常:
>>> dic = {'Name': 'Jack','Age': 7, 'Class': 'First'}
>>> dic["address"]
Traceback (most recent call last):File "<pyshell#7>", line 1, in <module>dic["address"]
KeyError: 'address'
3.增加和修改
增加就是往字典插入新的键值对,修改就是给原有的键赋予新的值。由于一个 key 只能
对应一个值,所以,多次对一个 key 赋值,后面的值会把前面的值冲掉。
>>> dic = {'Name': 'Jack','Age': 7, 'Class': 'First'}
>>> dic["address"] = "Shanghai"
>>> dic["address"] = "Beijing"
>>> dic["Age"] = 18
>>> dic
{'Name': 'Jack', 'Age': 18, 'Class': 'First', 'address': 'Beijing'}
要统计字典内键的个数,可以使用 Python 内置的 len()函数:
dic = {'Name': 'Jack','Age': 7, 'Class': 'First'}
>>> len(dic)
4.删除字典元素、清空字典和删除字典
使用 del 关键字删除字典元素或者字典本身,使用字典的 clear()方法清空字典。
>>> dic
{'Name': 'Jack', 'Age': '20', 'Class': 'First', 'sex': 'male'}
>>> del (dic['Name']) # 删除指定的键
>>> dic
{'Age': '20', 'Class': 'First', 'sex': 'male'}
>>> a = dic.pop('Class') # 弹出并返回指定的键
>>> a
'First'
>>> dic
{'Name': 'Jack', 'Age': 7}
>>> dic.clear() # 清空字典
>>> dic
{}
>>> del (dic) # 删除字典本身
>>> dic
Traceback (most recent call last):File "<pyshell#20>", line 1, in <module>dic
NameError: name 'dic' is not defined
5.字典的重要方法
下表中列出了字典的重要内置方法。其中的 get、items、keys 和 values 是核心中的核
心,必须熟练掌握!
方法 | 作用 |
---|---|
clear() | 删除字典内所有元素 |
copy() | 返回一个字典的浅复制 |
fromkeys() | 创建一个新字典,以序列 seq 中元素做字典的键 |
get(key) | 返回指定键的值,如果值不在字典中,则返回default 值 |
items() | 以列表返回可遍历的(键, 值) 元组对 |
keys() | 以列表返回字典所有的键 |
values() | 以列表返回字典所有的值 |
pop(key) | 删除并返回指定 key 的值 |
popitem() | 随机删除并返回字典内某个键的值 |
setdefault(key, default=None) | 和 get()类似,但如果键不存在于字典中,将会添加键并将值设为 default |
update(dict2) | 把字典 dict2 的键/值对更新到 dict 里 |
6.遍历字典
遍历字典获得的键值对是随机无序的!以下的遍历方法必须全部熟练掌握。
dic = {'Name': 'Jack', 'Age': 7, 'Class': 'First'}
# 1 直接遍历字典获取键,根据键取值
for key in dic:print(key, dic[key])
# 2 利用 items 方法获取键值,速度很慢,少用!
for key,value in dic.items():print(key,value)
#3 利用 keys 方法获取键
for key in dic.keys():print(key, dic[key])
#4 利用 values 方法获取值,但无法获取对应的键。
for value in dic.values():print(value)
【愚公系列】2021年12月 Python教学课程 07-字典Dict相关推荐
- 【愚公系列】2021年12月 Python教学课程 01-全方位解读Python
文章目录 一.python简介 二.python起源 三.Python 的发展趋势 四.Python 语言的特点 1. 简单易学.明确优雅.开发速度快 2. 跨平台.可移植.可扩展.交互式.解释型.面 ...
- 【愚公系列】2021年12月 Python教学课程 04-字符串
文章目录 一.字符串类型 str 1 字符串类型的定义 2 字符串的运算: 3 Python 转义字符: 4 "多行字符串" 5 字符串内置方法 6 格式化方法 7 字符串颜色控制 ...
- 【愚公系列】2021年12月 Python教学课程 17-模块与包
文章目录 一. 什么是模块 二. 模块的使用 1. import xx.xx 2. from xx.xx import xx.xx 3. from xx.xx import xx as rename ...
- 【愚公系列】2021年12月 Python教学课程 14-递归函数
文章目录 一.递归函数 一.递归函数 我们在前面的章节中,很多次的看到了在函数中调用别的函数的情况.如果一个函数在内部调用了自身,这个函数就被称为递归函数. What?函数可以自己调用自己?那不是成为 ...
- 【愚公系列】2021年12月 Python教学课程 19-面向对象编程-面向对象定义
文章目录 一. 什么是面向对象编程 总结 一. 什么是面向对象编程 面向对象编程:Object Oriented Programming,简称 OOP,是一种程序设计方法.OOP 把对象作为程序的基本 ...
- 【愚公系列】2021年12月 Java教学课程 14-流程控制语句之while循环
文章目录 一.while循环 1.循环语句-while循环 2.while循环案例-珠穆朗玛峰 3.循环语句-dowhile循环 一.while循环 1.循环语句-while循环 while循环完整格 ...
- 【愚公系列】2021年12月 Java教学课程 38-Lambda表达式
文章目录 一.Lambda表达式 1.体验Lambda表达式 2.Lambda表达式的标准格式 3.Lambda表达式练习1 4.Lambda表达式练习2 5.Lambda表达式练习3 6.Lambd ...
- 【愚公系列】2021年12月 Java教学课程 31-继承详解
文章目录 一.继承详解 1. 继承 1.1 继承的实现(掌握) 1.2 继承的好处和弊端(理解) 1.3. Java中继承的特点(掌握) 2. 继承中的成员访问特点 2.1 继承中变量的访问特点(掌握 ...
- 【愚公系列】2021年12月 Java教学课程 34-接口
文章目录 一接口 1.接口的概述 2.接口的特点 3.接口的成员特点 4.类和接口的关系 一接口 1.接口的概述 接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用. Java中接口存在的两 ...
最新文章
- Vuex-全局状态集中式管理神器,做vue项目不知道Vuex真的out了
- ICML 2021文章引发热议:矩阵乘法无需相乘,速度提升100倍
- C# 中 System.Range 结构体
- CC2540 串口0 通道2配置
- 用SQL语句查看数据库数据量的大小
- nginx第三方模块---nginx-sticky-module的使用(基于cookie的会话保持)
- 产品经理做产品设计的九步法
- SSL-Explorer 安装配置
- 基于Python的SVM算法深入研究
- python怎么输出文件_python如何输出文件内容
- 《麦肯锡方法》第四部分 麦肯锡生存之道 第17-19章-思维导图
- 西门子g120变频器接线图_西门子1500PLC通过工艺对象对G120变频器组态和调试
- 设计MP3网页音乐播放器
- 报表工具对比选型系列用例——排名及跨行组统计
- vue 微信公众号定位+高德地图
- mysql优化的魅力,从20s优化到500ms,仅需三招(荣耀典藏版)
- ucloud中的udisk错误“Read-only file system”修复指南
- 一些时间的概念与区分(UTC、GMT、LT、TAI等)
- 100天精通Python(数据分析篇)——第51天:numpy模块常用函数大全(字符串/数学/算术/统计/排序/搜索函数)
- STM32外设配置—什么时候需要开启AFIO时钟?
热门文章
- 软件工程:什么样的公司需要专职测试
- 讲解为什么会提示“invalid type argument of ‘->‘ (have ‘Data_Ao‘)”错误信息
- ARP绑定IP与MAC地址
- 操作系统和Linux发展
- css文字自动横向排列,css代码横向排列怎样自动适应宽度?
- 无法启动此程序,因为计算机中丢失api-ms-win-crt-locale-l1-1-0.dll,尝试重新安装此程序以解决此问题
- 3d建模师前景如何,想要做到月薪六千多难不难?
- 6splus计算机按键应用,iPhone 6s/6s Plus实用技巧:用小白点锁屏
- 16090202(剑灵GPA)
- 学习Qss--字体、文本属性