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'>

 

 

 

posted @ 2011-11-27 16:26  NaN-Hax  阅读(498)  评论(0编辑  收藏  举报