1.创建字典
(1)通过自己的输入创建字典
字典用大括号,至此,小括号( )表示元组,中括号[ ]表示列表,大括号{ }表示字典,python中最常用的三种数据结构就全了
(2)通过其他映射(如其他字典)或键值对序列创建字典
(3)通过关键字实参调用dict
2.字典常规操作
长度、取值、赋值、删除项、成员资格
3.清空字典
4.复制字典
(1)浅拷贝copy
dict1 = {'user':'runoob','num':[1,2,3]}
dict2 = dict1 # 直接赋值: 引用对象
dict3 = dict1.copy() # 浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用
# 修改 data 数据
dict1['user']='root'
dict1['num'].remove(1)
# 输出结果
print(dict1)
print(dict2)
print(dict3)
实例中 dict2 其实是 dict1 的引用(别名),所以输出结果都是一致的,dict3 父对象进行了深拷贝,不会随dict1 修改而修改,子对象是浅拷贝所以随 dict1 的修改而修改。
也就是说在字典dict1中,user是一个值,而num是指向[1,2,3]这个列表的地址
因此,dict3中,把user的值和num的值都复制过来了,user的值是个字符串,而num的值是列表[1,2,3]的地址dict3中有自己的user值,但num值跟dict1中的值一样,都是指向列表[1,2,3]的地址,所以当列表[1,2,3]发生改变时,dict3和dict1中的num都会改变
这里为什么叫浅拷贝,也就是只拷贝第一层,涉及到引用的,不会拷贝被引用的数据结构,只拷贝了指向这块数据的地址
(2)深拷贝copy
from copy import deepcopy
dict1 = {'user':'runoob','num':[1,2,3]}
dict2 = dict1 # 浅拷贝: 引用对象
dict3 = dict1.copy() # 浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用
dict4 = deepcopy(dict1)
# 修改 data 数据
dict1['user']='root'
dict1['num'].remove(1)
# 输出结果
print(dict1)
print(dict2)
print(dict3)
print(dict4)
与浅拷贝对应的,是深拷贝,也就是会拷贝所有被引用的数据
5.指定键创建字典
6.怎么访问字典项
7.返回字典项列表(将字典项转换为列表)
方法items返回一个包含所有字典项的列表,其中每个元素都为(key, value)的形式。字典项在列表中的排列顺序不确定
8.返回字典中的键
9.怎么删除指定键值对
10.随机弹出字典项
11.获取制定键值的值,如不存在用缺省值添加键值对
12.使用一个字典项更新另一个字典(update)
13.返回字典所有值的字典视图
14.集合与相关操作