字典:一一对应(映射)

键(key)-->值(value)


字典是另一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。


注意:列表、元组、字符串都是数据类型,字典不是数据类型而是映射类型。python中唯一的映射类型。


一、创建字典

字典由多个键和对应值成对组成。字典使用大括号(注意:集合也用大括号)

python字典in Python字典索引_赋值


1、索引:索引方式用中括号 ,但不是用索引值,而是使用字典中的键,可以是整形变量、变量、字符串类型等。

冒号前后组成一个键组。冒号前面的称为键,冒号后边的称为对应的值。


2、dict()创建字典

dict(mapping):是一个工厂函数,是一个类型,不是一个BIF,不是一个普通的函数。调用他会生成一个实例,就像工厂一样,一下一个模块。


1)直接使用:只有一个参数,利用元组、列表构成映射关系创建字典

python字典in Python字典索引_元组_02


2)使用关键字

python字典in Python字典索引_python字典in_03

注意:使用双引号会报错,所以不使用最后会自动加上


3)直接给字典的键赋值

如果键本身存在,则改写键对的值。如果不存在,则自动创建并赋值

python字典in Python字典索引_元组_04


二、字典的方法

1、fromkeys(...):创建并返回一个新的字典

两个参数

-s:字典的键值

-v:键值对应的值,不提供的话默认为none

例如:

python字典in Python字典索引_元组_05

注意:会统一赋值,如果想单独为某些键赋值,那不可能完成而是创建了一个新的字典


2、访问字典的方法

1、键、值、键组

1)keys():返回字典的键

python字典in Python字典索引_字符串_06

2)values():返回字典的键值

python字典in Python字典索引_元组_07

3)items():返回字典的像(键,值

python字典in Python字典索引_python字典in_08


注意:以上三种方法一般都用在for循环中。若字典中不存在要索引的键组时,会报错。

此时,引入.get()方法。


2、.get()方法:该方法索引不存在的键组时不会发生报错,而是返回一个None对象(什么都没有的对象)。

当get()找不到具体的值时,可以让它返回一个具体的值,但不会添加到字典中。

python字典in Python字典索引_python字典in_09

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}