字典是Python中唯一实现映射关系的内置类型。
字典的创建:
(1)直接用大括号和冒号的组合进行映射关系的组合
x = {'苹果':'apple', '香蕉':'banana'}
冒号左边称为键,右侧称为值;一个键对应一个值,可以有重复的值,但不允许有重复的键,由键可以得到值:
(2)使用dict()函数,每个参数就是一个键值对:
需要注意的是,使用dict()函数创建字典时不可以在键上加引号,否则会出现语法上的错误。
(3)使用列表作为参数,列表中的每个元素是使用元组包裹起来的键值对
(4)混合法,本质就是第一种和第二种的混合
(5)借用zip()函数创建:
字典的新增:
(1)可以由字典中不存在的键创建一个新的键值对:
(2)fromkeys()方法
语法结构为:fromkeys(iterable, value);可迭代对象中的元素作为键,value为值默认为None:
字典的删除:
(1)pop()方法
语法格式为:pop(key[, default]),删除给定的键的键值对,并返回对应的值:
如果pop一个不存在的键就会出现异常,如果不想出现异常,可以设置default参数。
(2)popitem()方法
在Python3.7之前随机删除字典里一个键值对,在Python3.7之后是删除最后加入的键值对(这里是Python3.9):
d['最后'] = '要删除' //先给d字典新增加一个键值对
(3)del 关键字
对于给定的键,删除对应的键值对;如果给的是字典,则整个字典将会被删除:
(4)clear()
clear()只会清空字典里的内容,而不会删除字典:
字典的修改:
(1)根据指定的键修改对应的值:
对于字典a:
a = {'1':'one', '2':'two'}
需注意的事,如果想要修改的键值对不存在,那么结果是会新增一个键值对,比如我想要修改键'3'对应的值,而键'3'不存在:
(2)update()方法
a = {'1': 'One', '2': 'two', '3': 'three'}
update()方法支持同时给他传入多个键值对,也可以给它传入另外一个字典,或者一个包含键值对的可迭代对象:
可以看出,如果有键对应,则覆盖其对应的值;没有键对应,则新增一个键值对。
还可以做如下修改:
字典的查找:
c = {'苹果': 'Apple', '香蕉': 'Banana'}
(1)给出指定的键,返回对应的值:
如果给定的键值不存在,则会抛出异常,没有解决办法,此时可以使用get()方法而不使其抛出异常。
(2)get()方法
语法结构为:get(key[, default])
(3)setdefault()方法
语法结构为:setdefault(key, default)
查找给定的键是否存在于字典中,如果存在,则返回对应的值(default的值不影响原值),如果不存在,则将该键存于字典中,并给其指定一个新的值(default)。
我们先查看一下此时字典c里的内容
①如果查找一个不存在的键‘梨’:
新增添了一个键值对,值默认为None。
②如果查找一个存在的键‘苹果’,并给定default的值,则会返回对应的值,且default不产生任何影响:
③如果查找一个不存在的键,并给定default的值,则会返回default的值,并且会在字典中新增该键与default对应的值的键值对:
items()、keys()、values()方法
字典c:
c = {'苹果': 'Apple', '香蕉': 'Banana', '梨': None, '桃子': 'Peach'}
items()用于获取字典的键值对;keys()用于获取字典的键;values()用于获取字典的值
先创建三个视图对象(字典的动态视图,字典发生改变,视图也会发生改变):
查看此时的视图内容:
现在进行字典内容的修改:
现在再查看三个视图对象:
copy()、len()
(1)copy()可以实现字典的浅拷贝:
(2)len()可以获取字典中键值对的数量:
字典转换为列表:
iter()
iter()将字典转换为一个迭代器,迭代器里只存放了键:
reversed()函数
嵌套
d = {'one':{'语文':67, '数学':78}, 'two':{'语文':78, '数学':99}}
字典推导式:
c = {'香蕉': 'Banana', '梨': 'Pear', '桃子': 'Peach', '苹果': 'Apple'}