一、什么是字典?
字典是python语言中唯一的映射类型
映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的广西,通常被认为是可变的哈希表
字典对象是可变的,它是一个容器类型,能存储任意个数的python对象,其中也包括其他容器类型。
字典类型与序列类型的区别:
1、存取和访问数据的方式不同
2、序列类型只用数字类型的键
3、映射类型可以用其他对象类型作为键
4、映射类型中的数据是无序排列的
5、映射类型用键直接"映射"到值
二、如何创建字典和给字典赋值
简单地说字典就是用大括号包裹的键值对的集合
>>> d1 = {'x':1,3:'xz','z':[1,2,3,4]}
>>> print d1
{'x': 1, 3: 'xz', 'z': [1, 2, 3, 4]}
三、字典的基本操作
1、如何访问字典中的值
>>> print d1['z']
[1, 2, 3, 4]
2、如何检查key是否在字典中
方法
>>> d1.has_key('z') //使用has_key()函数来判断键'z'是否存在于字典中
True
in 、ont in
>>> 'z' in d1
True
3、如何更新字典
a.添加一个新元素或键值对
>>> d1['test'] = 'hello,world!!!!' //随机网字典里面添加了一对键值
>>> print d1
{'test': 'hello,world!!!!', 'x': 1, 3: 'xz', 'z': [1, 2, 3, 4]}
b.更新一个元素或键值对
>>> d1['x'] = 'love beijing' //通过重新定义旧的键值,起到修改作用
>>> print d1
{'test': 'hello,world!!!!', 'x': 'love beijing', 3: 'xz', 'z': [1, 2, 3, 4]}
c.删除一个元素或键值对
>>> del d1[3] //通过del函数进行删除相应的key-value
>>> print d1
{'test': 'hello,world!!!!', 'x': 'love beijing', 'z': [1, 2, 3, 4]}
>>> d1.pop('test') //通过pop()方法弹出一对key-value
'hello,world!!!!'
>>> print d1
{'x': 'love beijing', 'z': [1, 2, 3, 4]}
四、字典的方法
1、adict.keys()返回一个保护字典所有key的列表
>>> adict = {3:'3','x':35,'y':[1,2,3,4],'v':'test'}
>>> adict.keys() //通过keys()方法获取字典里面所有的键值
['y', 'x', 3, 'v']
2、adict.values()返回一个包含字典所有value的列表
>>> adict.values()
[[1, 2, 3, 4], 35, '3', 'test']
3、adict.items()返回一个包含所有元组的列表
>>> print adict
{'y': [1, 2, 3, 4], 'x': 35, 3: '3', 'v': 'test'}
>>> adict.items() //通过items方法将字典转变成元组
[('y', [1, 2, 3, 4]), ('x', 35), (3, '3'), ('v', 'test')]
4、adict.clear()删除字典中的所有项或元素
>>> d6 = {1:3,3:'z','b':78}
>>> print d6
{1: 3, 3: 'z', 'b': 78}
>>> d6.clear() //利用clear()函数清空整个字典
>>> print d6
{}
5、adict.copy()返回一个字段浅拷贝的副本
>>> d7 = adict.copy() //利用copy()函数复制了一个字典,并且不随原始字典的变化而变化
>>> print d7
{'y': [1, 2, 3, 4], 'x': 35, 3: '3', 'v': 'test'}
>>> adict['test'] = 'uuuuuu'
>>> print d7
{'y': [1, 2, 3, 4], 'x': 35, 3: '3', 'v': 'test'}
6、adict.fromkeys(seq,val=None)创建并返回一个新字典,以seq中的元素做该字段的键,val做该字典中所有键对应的初始值
7、adict.get(key,default = None)返回字典中key对应的值,若key不存在字典中,则返回default的值(默认为None)
>>> adict.get('test') //通过get()方法返回对应的value值
'uuuuuu
8、adict.has_keys(key)如果key在字典中,返回True,否则返回False
>>> adict.has_key('3') //通过has_key()方法查看字典中是否有相应的值,有则为真,无则为假
False
>>> adict.has_key('v')
True
9、adict.iteritems()、adict.iterkeys()、adict.itervalues()与它们对应的非迭代方法一样
10、adict.pop(key)和get方法相似,如果字典中存在key,删除并返回key对应的value
11、adict.setdefalut(key,defalut=None)与set()方法相似,但如果字典中不存在key键,由adict[key] = default为它赋值
>>> print adict['vdddd']
tset
>>> adict.setdefault('vdddd','tsetdddd') //如果值存在,则不进行赋值,不存在则赋值
'tset'
>>> print adict['vdddd']
tset
12、adict.update(bdict)将字典bdict的键值对添加到字典adict中
五、字典的遍历
1、遍历字典的key(键)
>>> for i in adict.keys(): //通过for循环,并且keys()方法统计字典中的键,进行遍历
... print i
...
3
test
vdddd
v
y
x
2、遍历字段的value(值)
>>> for i in adict.values():
... print i
...
3
uuuuuu
tset
test
[1, 2, 3, 4]
35
3、遍历字段的项
>>> for i in adict.items(): //通过items()方法将字典转为元组的列表,再进行遍历
... print i
...
(3, '3')
('test', 'uuuuuu')
('vdddd', 'tset')
('v', 'test')
('y', [1, 2, 3, 4])
('x', 35)
4、遍历字典的key-value
>>> for key,value in adict.items(): //也是一个经典的遍历
... print 'key=%s value=%s'%(key,value)
...
key=3 value=3
key=test value=uuuuuu
key=vdddd value=tset
key=v value=test
key=y value=[1, 2, 3, 4]
key=x value=35