『Python』序列学习总结之四——字典

来源:互联网 发布:传奇3地图编辑器源码 编辑:程序博客网 时间:2024/06/07 09:41

1、字典的键可以是任意的不可变类型(如元组,字符串)但键不可为空,None可作为键值,空格不可以

2、如何理解浅复制(copy)和深复制(deep copy)

字典中的可变序列(列表)可被视为容器中的容器,故

①当容器中的容器被赋值为序列时,浅复制中相应的元素不会相应改变。此时相对应的ID不同

②但当容器中的容器中的元素被改变时,浅复制中相应的元素会相应改变。此时相对应的ID相同

如:

from copy import deepcopydict = {1: 111, 2: 222, 3: [1,2,3], 4: [1,2,3]}dict1 = dict.copy()dict2 = deepcopy(dict)print 'dict:',dict,'dict1:',dict1, 'dict2:', dict2print 'dict:',id(dict),'dict1:',id(dict1), 'dict2:', id(dict2)print 'dict键:', id(dict[1]), 'dict1键:', id(dict1[1]), 'dict2键:', id(dict2[1])dict[1] = 333dict[3] = [5,6,7]print 'dict:',dict,'dict1:',dict1, 'dict2:', dict2dict[4][1] = 444print 'dict:',dict,'dict1:',dict1, 'dict2:', dict2print 'dict键:', id(dict[3]), 'dict1键:', id(dict1[3]), 'dict2键:', id(dict2[3])print 'dict键:', id(dict[4]), 'dict1键:', id(dict1[4]), 'dict2键:', id(dict2[4])输出结果:dict: {1: 111, 2: 222, 3: [1, 2, 3], 4: [1, 2, 3]} dict1: {1: 111, 2: 222, 3: [1, 2, 3], 4: [1, 2, 3]} dict2: {1: 111, 2: 222, 3: [1, 2, 3], 4: [1, 2, 3]}dict: 33237872 dict1: 33296432 dict2: 33296720dict键: 32209192 dict1键: 32209192 dict2键: 32209192dict: {1: 333, 2: 222, 3: [5, 6, 7], 4: [1, 2, 3]} dict1: {1: 111, 2: 222, 3: [1, 2, 3], 4: [1, 2, 3]} dict2: {1: 111, 2: 222, 3: [1, 2, 3], 4: [1, 2, 3]}dict: {1: 333, 2: 222, 3: [5, 6, 7], 4: [1, 444, 3]} dict1: {1: 111, 2: 222, 3: [1, 2, 3], 4: [1, 444, 3]} dict2: {1: 111, 2: 222, 3: [1, 2, 3], 4: [1, 2, 3]}dict键: 33274656 dict1键: 33243384 dict2键: 33274576dict键: 33225184 dict1键: 33225184 dict2键: 33272016


3、字典方法

1、fromkeys: 使用给定的键建立新的字典,每个键都对应默认的值None,也可给定默认值。

注:建立的是新的字典,跟原字典无关。

2、has_key: 检查字典中是否含有指定的键

3、keys: 以列表形式返回字典中的键

4、values:以列表形式返回字典中的值 
5、items: 以列表形式返回字典中的键值对

6、update: 用一个字典更新另一个字典

7、copy: 对字典进行浅复制

8、clear: 清空字典

9、popitem: 随机地移除字典中的键值对

10、get: 访问字典中是否有存在的项,若没有则返回指定的信息

11、setdefault: 当键不存在时,setdefault返回默认值并相应地更新字典,如果键存在则返回与其相应的值。


4、字典方法总结

1、除update、clear外都有返回值

2、has_key返回的是布尔值

3、copy返回的是一个字典

4、由于字典是无序的,所以:

①keys、values、items以及iter*等的方法返回结果都是无序的

②遍历字典的输出结果是无序的

③无法使用如list的append方法等跟位置有关的方法

④popitem弹出随机的项


0 0
原创粉丝点击