10. 字典

在字典中,键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行。

10.1 字典创建

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
dict = {x:x+1 for x in range(10)}

10.2 字典值获取

dict['Alice']

10.3 更新字典

dict['Alice'] = 10

10.4 删除字典元素

del dict['Alice']
del dict

10.5 字典内置函数&方法

函数					描述								实例
len(dict)			计算字典元素个数,即键的总数。		dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
													len(dict)
str(dict)			输出字典,以可打印的字符串表示。	dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
													str(dict)
													"{'Name': 'Runoob', 'Class': 'First', 'Age': 7}"
type(variable)		返回输入的变量类型				dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
													type(dict)
													<class 'dict'>

radiansdict.clear()						删除字典内所有元素
radiansdict.copy()						返回一个字典的浅复制
radiansdict.fromkeys()					创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
radiansdict.get(key, default=None)		返回指定键的值,如果值不在字典中返回default值
key in dict 							如果键在字典dict里返回true,否则返回false
radiansdict.items()						以列表返回可遍历的(,) 元组数组
radiansdict.keys()						返回一个迭代器,可以使用 list() 来转换为列表
radiansdict.setdefault(key, default=None)	和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
radiansdict.update(dict2)				把字典dict2的键/值对更新到dict里
radiansdict.values()					返回一个迭代器,可以使用 list() 来转换为列表
pop(key[,default])			删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
popitem()								随机返回并删除字典中的一对键和值(一般删除末尾对)

扩展:

  1. 浅拷贝:
    只拷贝引用地址,未拷贝内容:
a = [1,2,3,4,5] 
b = a
  1. 深拷贝:
    拷贝引用地址和内容:
a = [1,2,3,4,5] 
import copy 
b = copy.deepcopy(a) 

可以递归拷贝;一拷到底

注意:
1、对于不可变类型 Number String Tuple,浅复制仅仅是地址指向,不会开辟新空间。
2、对于可变类型 List、Dictionary、Set,浅复制会开辟新的空间地址(仅仅是最顶层开辟了新的空间,里层的元素地址还是一样的),进行浅拷贝
3、浅拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象的;改变原始对象中为不可变类型的元素的值,只有原始类型受影响。