字典:一一对应(映射)
键(key)-->值(value)
字典是另一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。
注意:列表、元组、字符串都是数据类型,字典不是数据类型而是映射类型。python中唯一的映射类型。
一、创建字典
字典由多个键和对应值成对组成。字典使用大括号(注意:集合也用大括号)
1、索引:索引方式用中括号 ,但不是用索引值,而是使用字典中的键,可以是整形变量、变量、字符串类型等。
冒号前后组成一个键组。冒号前面的称为键,冒号后边的称为对应的值。
2、dict()创建字典
dict(mapping):是一个工厂函数,是一个类型,不是一个BIF,不是一个普通的函数。调用他会生成一个实例,就像工厂一样,一下一个模块。
1)直接使用:只有一个参数,利用元组、列表构成映射关系创建字典
2)使用关键字
注意:使用双引号会报错,所以不使用最后会自动加上
3)直接给字典的键赋值
如果键本身存在,则改写键对的值。如果不存在,则自动创建并赋值
二、字典的方法
1、fromkeys(...):创建并返回一个新的字典
两个参数
-s:字典的键值
-v:键值对应的值,不提供的话默认为none
例如:
注意:会统一赋值,如果想单独为某些键赋值,那不可能完成而是创建了一个新的字典
2、访问字典的方法
1、键、值、键组
1)keys():返回字典的键
2)values():返回字典的键值
3)items():返回字典的像(键,值)
注意:以上三种方法一般都用在for循环中。若字典中不存在要索引的键组时,会报错。
此时,引入.get()方法。
2、.get()方法:该方法索引不存在的键组时不会发生报错,而是返回一个None对象(什么都没有的对象)。
当get()找不到具体的值时,可以让它返回一个具体的值,但不会添加到字典中。
3、.setdefault():和.get()方法类似,但在字典中找不到对应键的时候会自动添加。随机添加(没有顺序)
>>> dict1.setdefault(32,'赞')
4、成员操作符in 和not in
>>> 31 in dict1
True
>>> 32 in dict1
False
注意:字典查找的是键,而在序列(列表、元组和字符串)里查找的是元素的值,而不是元素的索引号。
5、.clear()清空字典
如果直接用dict1={}清空也可以,但是不严谨。因为如果字典有多个名字,现在只是清空并且成为了另一个字典,而原先的字典还存在。
6、.copy():浅拷贝
注意:拷贝和直接赋值不一样。拷贝的地址不一样,而赋值的地址一样。
拷贝:原来东西的变化不影响
赋值:同命运
7、.pop():给定键弹出相应的值
.popitem():随机从键组中弹出一组像
8、.update():利用另一个字典或映射关系去更新字典(相同合并,不相同添加)
>>> a={1:1}
>>> b={1:2}
>>> a.update(b)
>>> a
{1: 2}