python dict字典
字典是另一种可变容器模型无序的,且可存储任意类型对象
字典首先是键值对形式
key : value
使用{}表示
- 字典的特点:
键必须是唯一的,但值则不必唯一。
值可以取任何数据类型,但键必须是不可变的类型。
不可变类型:数字、字符串、元组;
可变类型:列表、字典。
字典中键值是无序的。
字典的基本操作
1.创建字典
>>> dic1 = {'k1':'v1' } >>> dic1 {'k1': 'v1'}
2.访问字典
dic[key] 形式返回键key对应的值value,如果key不在字典中会引发一个KeyError。
>>> dic1['k1'] 'v1' >>> dic1['k2'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'k2'
3.判断key是否在字典中
>>> 'k1' in dic1 True >>> 'k2' in dic1 False
有返回True,无返回False
4.更新字典 update方法
>>> dic2 = {'k2':'v2'} >>> dic1.update(dic2) >>> dic1 {'k2': 'v2', 'k1': 'v1'}
5.删除操作
删除一个键对
>>> del dic1['k1'] >>> dic1 {'k2': 'v2'}
删除整个字典
>>> del dic1 >>> dic1 Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'dic1' is not defined
清空字典
>>> dic1 = {'k1':'v1' } >>> dic1.clear() >>> dic1 {}
删除一个键,并返回改键对应的值
>>> dic1 {'k2': 'v2', 'k1': 'v1'} >>> dic1.pop('k2') 'v2' >>> dic1 {'k1': 'v1'}
6.字典排序
按照键排序
>>> dic3 = {11:'abc','bcd':'kkk','ttt':'aaa',99:33} >>> dic3 {'bcd': 'kkk', 99: 33, 11: 'abc', 'ttt': 'aaa'} >>> sorted(dic3) [11, 99, 'bcd', 'ttt']
按照键对进行排序
>>> dic3 = {11:'abc','bcd':'kkk','ttt':'aaa',99:33} >>> dic3 {'bcd': 'kkk', 99: 33, 11: 'abc', 'ttt': 'aaa'} >>> sorted(dic3.items()) [(11, 'abc'), (99, 33), ('bcd', 'kkk'), ('ttt', 'aaa')]
7.遍历字典
遍历键
>>> for i in dic3.keys(): ... print i ... bcd 99 11 ttt
遍历值
>>> for i in dic3.values(): ... print i ... kkk 33 abc aaa
遍历键值
>>> for i in dic3.items(): ... print i ... ('bcd', 'kkk') (99, 33) (11, 'abc') ('ttt', 'aaa')
注意使用字典的时候:
1、不能允许一键对应多个值;
2、键必须是可哈希的。
字典的方法总结:
1、dict.keys() 返回一个包含字典所有KEY的列表;
2、dict.values() 返回一个包含字典所有value的列表;
3、dict.items() 返回一个包含所有(键,值)元祖的列表;
4、dict.clear() 删除字典中的所有项或元素;
5、dict.copy() 返回一个字典浅拷贝的副本;
6、dict.fromkeys(seq, val=None) 创建并返回一个新字典,以seq中的元素做该字典的键,val做该字典中所有键对应的初始值(默认为None);
7、dict.get(key, default = None) 返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None);
8、dict.has_key(key) 如果key在字典中,返回True,否则返回False。 现在用 in 、 not in;
9、dict.iteritems()、adict.iterkeys()、adict.itervalues() 与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表;
10、dict.pop(key[,default]) 和get方法相似。如果字典中存在key,删除并返回key对应的vuale;如果key不存在,且没有给出default的值,则引发keyerror异常;
11、dict.setdefault(key, default=None) 和set()方法相似,但如果字典中不存在Key键,由 adict[key] = default 为它赋值;
12、dict.update(bdict) 将字典bdict的键值对添加到字典adict中。