1.创建字典

>>> dict(("ab", "12"))                 
{'a': 'b', '1': '2'}
>>> dict([("name","bob"),("age","23")])
{'age': '23', 'name': 'bob'}
>>> adict = dict([("name","bob"),("age","23")])
>>> zip(adict)
[('age',), ('name',)]
>>> adict.items()
[('age', '23'), ('name', 'bob')]
>>> bdict = {}.fromkeys(("bob","alice"),18)
>>> bdict
{'bob': 18, 'alice': 18}

2.访问字典

字典是映射类型,意味着它没有下标,访问字典中的值需要使用相应的键

>>> bdict
{'bob': 18, 'alice': 18}
>>> print "%(alice)s" % bdict
18

3.更新字典

(1)如果字典中有该键,则更新相关值

(2)如果字典中没有该键,则向字典中添加新值

>>> bdict
{'bob': 18, 'alice': 18}
>>> bdict["bob"] = 23
>>> bdict
{'bob': 23, 'alice': 18}
>>> bdict["zhang"] = 23
>>> bdict
{'bob': 23, 'alice': 18, 'zhang': 23}

4.删除字典

(1)通过del可以删除字典中的元素或整个字典

(2)使用内部方法clear()可以清空字典

(3)使用pop()方法可以“弹出”字典中的元素

5.字典操作符

(1)使用字典键查找操作符[],查找键所对应的值

(2)使用in和not in 判断键是否存在于字典中

>>> bdict
{'bob': 23, 'alice': 18, 'zhang': 23}
>>> "bob" in bdict
True
>>> 23 in bdict
False

6.字典常用内建函数

(1)len():返回字典中元素的数目

(2)hash():本身不是为字典设计的,但是可以判断某个对象是否可以作为字典的键

>>> len(bdict)
3
>>> hash(3)
3
>>> hash("abc")
1453079729188098211
>>> hash("[1,2]")
4113005419880972442
>>> hash([1,2])  
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> hash((1,2))
3713081631934410656

(3)dict.copy():返回字典(浅复制)的一个副本,只复制值,不复制在内存中的地址

>>> adict
{'bob': 20, 'alice': 20, 'zhang': 23}
>>> bdict = adict                   //直接赋值的,只要一个改变会影响其它的
>>> adict["zhang"] = 20
>>> adict
{'bob': 20, 'alice': 20, 'zhang': 20}
>>> bdict
{'bob': 20, 'alice': 20, 'zhang': 20}
>>> cdict = adict.copy()             //进行浅复制
>>> adict["bob"] = "100" 
>>> adict
{'bob': '100', 'alice': 20, 'zhang': 20}
>>> bdict
{'bob': '100', 'alice': 20, 'zhang': 20}
>>> cdict                            //只改变直接赋值的,不改变浅复制的
{'bob': 20, 'alice': 20, 'zhang': 20}
>>> id(adict)                        //用id函数查看,前两个是一个id,浅复制的是另一个id
11771552
>>> id(bdict)
11771552
>>> id(cdict) 
11771264

(4)get方法

(1)取不存在的键不会报错,返回None

(2)取存在的键正常取出键值

(3)也可以在后边加, 当不存在时返回,后边的值

>>> adict
{'bob': '100', 'alice': 20, 'zhang': 20}
>>> adict["wang"]            //直接取就会报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'wang'
>>> adict.get("wang")         //使用get方法不会报错,返回的就是None
>>> print adict.get("wang")
None
>>> adict.get("bob")          //存在返回对应的键值
'100'
>>> adict.get("wang", "not found")  //不存在可以返回逗号后边的字符
'not found

(4)setdefault方法

(1)如果字典里边有键的话就不添加,这样可以安全的往字典里边加元素

(2)如果有键的话就返回对应的键值,如果没有就添加新元素,并将新元素的对应的值返回

>>> adict
{'bob': '100', 'alice': 20, 'zhang': 20}
>>> adict.setdefault("bob", 25)      //无法添加已存在的元素,返回原有元素的键值
'100'
>>> adict
{'bob': '100', 'alice': 20, 'zhang': 20}
>>> adict.setdefault("mary", 25)      //添加进mary这个元素,并返回对应的值
25
>>> adict
{'bob': '100', 'mary': 25, 'alice': 20, 'zhang': 20}

(5)items():返回一个包含字典中(键,值)对元组的列表

(6)keys():包含字典中键的列表

(7)values():返回一个包含字典中的所有值的列表

>>> adict
{'bob': '100', 'mary': 25, 'alice': 20, 'zhang': 20}
>>> adict.keys()
['bob', 'mary', 'alice', 'zhang']
>>> adict.values()
['100', 25, 20, 20]
>>> bdict.items()
[('bob', '100'), ('mary', 25), ('alice', 20), ('zhang', 20)]
>>>

(8)update(字典名)相当于列表的extend方法,将a字典内容放到b字典中

>>> adict
{'bob': '100', 'mary': 25, 'alice': 20, 'zhang': 20}
>>> bdict
{'wang': 12}
>>> bdict.update(adict)
>>> bdict
{'bob': '100', 'zhang': 20, 'wang': 12, 'alice': 20, 'mary': 25}
>>> adict
{'bob': '100', 'mary': 25, 'alice': 20, 'zhang': 20}