Python核心数据类型——字典
1. 字典中的元素是通过键来存取的,而不是通过偏移来存取,保存在字典中的项没有特定的顺序,支持在原处修改。
#字典的创建方法 >>> D1 = {} >>> D2 = {'spam': 2, 'eggs': 3}
2. 当对新字典键进行赋值(之前没有被赋值的键),就会在字典内生成一个新的元素。
>>> D1 = {'a': 1, 'b': 2} >>> D1['c'] = 3 >>> D1 {'a': 1, 'c': 3, 'b': 2}
3. 删除和获取键
>>> D1 = {'a': 1, 'b': 2} >>> D1.get('a')#如果'a'这个键不存在返回None,若存在返回映射的值 1 >>> D1.get('c', 'Key does not exist')#如果'c'这个键不存在返回'Key does not exist',若存在返回映射的值 'Not this key' >>> D2 = {'a': 0, 'c': 3} >>> D1 {'a': 1, 'b': 2} >>> D1.update(D2)#update方法类似于合并,若存在相同的键就用新的覆盖旧的 >>> D1 {'a': 0, 'c': 3, 'b': 2} >>> >>> D1.pop('a') #pop方法删除一个键,并返回它的值 0 >>> D1 {'c': 3, 'b': 2} >>> del D1['b'] #del方法删除一个键 >>> D1 {'c': 3}
4. 字典的键可以实现稀疏数据结构。
>>> D1 = {1: 'a', 100: 'b'} # 避免需要创建100个元素的数组(列表) >>> D1[1] 'a' >>> D[100] >>> D1[100] 'b'
5. 键可以是任何不可变的对象(如数字,字符串),因为必须保证键的不可变,键是唯一的。
6. 字典的一些方法
>>> D2.keys() ['a', 'c'] >>> D2.values() [0, 3] >>> D2.items() [('a', 0), ('c', 3)]
7. 遍历字典
>>> for key in D1.keys(): ... print key, D1[key] ... c 3 b 2 >>> for v in D1.values(): ... print v ... 3 2 >>> for key in D1: ... print key, D1[key] ... c 3 b 2
如果要在遍历字典的同时进行删除或添加操作,就不能用for key in D1,而要使用D1.keys(),因为本质上D1.keys()返回一个新的list,不随着D1的修改而改变。否则会出现
RuntimeError: dictionary changed size during iteration
>>> for key in D1.keys(): ... D1.pop(key) ...
k, v 方式的遍历
# D.items() 返回的是列表 for k, v in D.items(): print k, v # D.iteritems() 返回的是生成器 for k, v in D.iteritems(): print k, v print type(D.items()) print type(D.iteritems()) >>> <type 'list'> >>> <type 'dictionary-itemiterator'>