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}