持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情
1.字典的概念
字典是python中的一种映射类型,也是一种容器。
- 在字典中,有这样两个概念:值与键
语法:
{key1 : var, key2 : var, key3 : var,...}
参数:
key----键,具有唯一性,且属于不可变对象,可以是字符串,数值等
var----值,可以是任意类型的数据,可重复
-
在字典中,每个键都有一个值与其对应,我们通过键
key查找与其关联的值value -
字典中的键是不能重复的
-
事实上,字典中的元素都是值键对。键与值之间通过冒号隔开。
2.字典的创建
我们使用大括号{ }来创建一个字典,元素之间通过逗号隔开,每个元素都是值键对。即一对值(value)和键(key),值与键之间通过冒号隔开。
注意!在字典中:
- 键必须是不可变数据,比如数值,字符串,元组。
- 值可以是任何数据。
1)我们来试着创建一个字典
如图:
2)我们也可以创建一个空字典。
如图:
3.有关字典的操作
1)操作一
len()函数可以返回字典的值键对数目
如图:
2)操作二
通过键key查找与之对应的值value
如图:
注意!
如果指定的键在字典中不存在,就会报错。
如图:
3)操作三
我们通过指定的键来修改其对应的值,如果指定的键不存在的话,就相当于向字典里添加新的值键对
4)操作四
我们通过del语句来删除字典中的值键对或者整个字典
如果想删除的键不存在,则会报错。
5)操作五
我们可以检查字典是否含有某个键
4.有关字典的方法
4.1----keys()
用法:
-
返回一个包含字典中的键的
dict_keys对象 -
我们可以使用list()函数来将
dict_keys对象转换为列表
如图:
4.2----values()
用法:
-
返回一个包含字典中的值的
dict_values对象 -
我们可以使用list()函数来将
dict_values对象转换为列表
如图:
4.3----items()
用法:
- 该函数返回一个可迭代的dict_items对象
- 该对象的每一个元素都是值和键组成的元组
如图
4.4----get()
语法:
dict.get(key, default=None)
参数:
key---- 要查找的键default---- 当指定键的值不存在时,返回默认值None(也可以自己设定默认值)
用法:
- 该函数返回指定键的值,如果值不在字典中返回默认值。
如图
4.5----setdefault()
语法:
dict.setdefault(key, default=None)
参数:
key---- 要查找的键default---- 当指定键的值不存在时,添加键并设置默认值None(也可以自己设定默认值)
用法:
- 该函数与get()函数很类似,二者不同在于,如果指定键的值不存在,那么setdefault()就会添加要查找的键和默认值,作为字典新的值键对
如图
4.6----update()
语法:
dict1.update(dict2)
参数:
dict2----字典
用法:
- 该函数用于将字典dict2中所有元素添加到字典dict1中
如图
- 需要注意的是。如果字典
dict2中的键与字典dict1中的键相同,那么以字典dict2为主,即将字典dict2的值更新字典dict1
如图:
4.7----clear()
用法:
- 该函数用于删除字典内所有元素,即将字典变成空字典
如图
4.8----copy()
用法:
返回字典的拷贝
实例
还有一点,直接赋值与copy()的区别在于,copy()方法可以进行深拷贝。
所有拷贝来的新字典不会随着旧字典的修改而修改,而直接赋值相当于引用,会随着旧字典的改变而改变。
具体如下:
4.9----fromkeys()
用法:
- 该函数用于创建一个新的字典
语法:
dict.fromkeys(seq[, value])
参数:
seq-- 由若干个键组成的序列value-- 可选项,是seq中所有键所对应的值,默认为 None。
实例
4.10----pop()
用法:
- 该函数用于删除字典中的指定元素,并返回被删除的值。
语法:
pop(key[,default])
参数:
key: 指定要删除的键default: 如果没有字典里没有指定的键,就返回default值
实例:
4.11----popitem()
用法:
- 该函数用于删除字典中的最后一个元素并返回该元素
实例:
注意:
如果对空字典使用该函数,则会引起异常。
如图:
5.有关字典的遍历
5.1.遍历字典的键
方式一:
方式二:
5.2.遍历字典的值
方式一:
方式二:
5.3.遍历字典的键值对
如图:
写在最后
好了,这就是今天的python笔记,欢迎大家到评论区一起讨论!