Python字典及字典基本操作方法详解
本文实例讲述了Python字典及字典基本操作方法。分享给大家供大家参考,具体如下:
字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字、字符串、元组,这种结构类型也称之为映射。字典类型是Python中唯一內建的映射类型,基本的操作包括如下:
(1)len():返回字典中键—值对的数量;
(2)d[k]:返回关键字对于的值;
(3)d[k]=v:将值关联到键值k上;
(4)deld[k]:删除键值为k的项;
(5)keyind:键值key是否在d中,是返回True,否则返回False。
一、字典的创建
1.1直接创建字典
d={'one':1,'two':2,'three':3} printd printd['two'] printd['three']
运算结果:
=======RESTART:C:\Users\Mr_Deng\Desktop\test.py======= {'three':3,'two':2,'one':1} 2 3 >>>
1.2通过dict创建字典
#_*_coding:utf-8_*_ items=[('one',1),('two',2),('three',3),('four',4)] printu'items中的内容:' printitems printu'利用dict创建字典,输出字典内容:' d=dict(items) printd printu'查询字典中的内容:' printd['one'] printd['three']
运算结果:
=======RESTART:C:\Users\Mr_Deng\Desktop\test.py======= items中的内容: [('one',1),('two',2),('three',3),('four',4)] 利用dict创建字典,输出字典内容: {'four':4,'three':3,'two':2,'one':1} 查询字典中的内容: 1 3 >>>
或者通过关键字创建字典
#_*_coding:utf-8_*_ d=dict(one=1,two=2,three=3) printu'输出字典内容:' printd printu'查询字典中的内容:' printd['one'] printd['three']
运算结果:
=======RESTART:C:\Users\Mr_Deng\Desktop\test.py======= 输出字典内容: {'three':3,'two':2,'one':1} 查询字典中的内容: 1 3 >>>
二、字典的格式化字符串
#_*_coding:utf-8_*_ d={'one':1,'two':2,'three':3,'four':4} printd print"threeis%(three)s."%d
运算结果:
=======RESTART:C:\Users\Mr_Deng\Desktop\test.py======= {'four':4,'three':3,'two':2,'one':1} threeis3. >>>
三、字典方法
3.1clear函数:清除字典中的所有项
#_*_coding:utf-8_*_ d={'one':1,'two':2,'three':3,'four':4} printd d.clear() printd
运算结果:
=======RESTART:C:\Users\Mr_Deng\Desktop\test.py======= {'four':4,'three':3,'two':2,'one':1} {} >>>
请看下面两个例子
3.1.1
#_*_coding:utf-8_*_ d={} dd=d d['one']=1 d['two']=2 printdd d={} printd printdd
运算结果:
=======RESTART:C:\Users\Mr_Deng\Desktop\test.py======= {'two':2,'one':1} {} {'two':2,'one':1} >>>
3.1.2
#_*_coding:utf-8_*_ d={} dd=d d['one']=1 d['two']=2 printdd d.clear() printd printdd
运算结果:
=======RESTART:C:\Users\Mr_Deng\Desktop\test.py======= {'two':2,'one':1} {} {} >>>
3.1.2与3.1.1唯一不同的是在对字典d的清空处理上,3.1.1将d关联到一个新的空字典上,这种方式对字典dd是没有影响的,所以在字典d被置空后,字典dd里面的值仍旧没有变化。但是在3.1.2中clear方法清空字典d中的内容,clear是一个原地操作的方法,使得d中的内容全部被置空,这样dd所指向的空间也被置空。
3.2copy函数:返回一个具有相同键值的新字典
#_*_coding:utf-8_*_ x={'one':1,'two':2,'three':3,'test':['a','b','c']} printu'初始X字典:' printx printu'X复制到Y:' y=x.copy() printu'Y字典:' printy y['three']=33 printu'修改Y中的值,观察输出:' printy printx printu'删除Y中的值,观察输出' y['test'].remove('c') printy printx
运算结果:
=======RESTART:C:\Users\Mr_Deng\Desktop\test.py======= 初始X字典: {'test':['a','b','c'],'three':3,'two':2,'one':1} X复制到Y: Y字典: {'test':['a','b','c'],'one':1,'three':3,'two':2} 修改Y中的值,观察输出: {'test':['a','b','c'],'one':1,'three':33,'two':2} {'test':['a','b','c'],'three':3,'two':2,'one':1} 删除Y中的值,观察输出 {'test':['a','b'],'one':1,'three':33,'two':2} {'test':['a','b'],'three':3,'two':2,'one':1} >>>
注:在复制的副本中对值进行替换后,对原来的字典不产生影响,但是如果修改了副本,原始的字典也会被修改。deepcopy函数使用深复制,复制其包含所有的值,这个方法可以解决由于副本修改而使原始字典也变化的问题。
#_*_coding:utf-8_*_ fromcopyimportdeepcopy x={} x['test']=['a','b','c','d'] y=x.copy() z=deepcopy(x) printu'输出:' printy printz printu'修改后输出:' x['test'].append('e') printy printz
运算输出:
=======RESTART:C:\Users\Mr_Deng\Desktop\test.py======= 输出: {'test':['a','b','c','d']} {'test':['a','b','c','d']} 修改后输出: {'test':['a','b','c','d','e']} {'test':['a','b','c','d']} >>>
3.3fromkeys函数:使用给定的键建立新的字典,键默认对应的值为None
#_*_coding:utf-8_*_ d=dict.fromkeys(['one','two','three']) printd
运算输出:
=======RESTART:C:\Users\Mr_Deng\Desktop\test.py======= {'three':None,'two':None,'one':None} >>>
或者指定默认的对应值
#_*_coding:utf-8_*_ d=dict.fromkeys(['one','two','three'],'unknow') printd
运算结果:
=======RESTART:C:\Users\Mr_Deng\Desktop\test.py======= {'three':'unknow','two':'unknow','one':'unknow'} >>>
3.4get函数:访问字典成员
#_*_coding:utf-8_*_ d={'one':1,'two':2,'three':3} printd printd.get('one') printd.get('four')
运算结果:
=======RESTART:C:\Users\Mr_Deng\Desktop\test.py======= {'three':3,'two':2,'one':1} 1 None >>>
注:get函数可以访问字典中不存在的键,当该键不存在是返回None
3.5has_key函数:检查字典中是否含有给出的键
#_*_coding:utf-8_*_ d={'one':1,'two':2,'three':3} printd printd.has_key('one') printd.has_key('four')
运算结果:
=======RESTART:C:\Users\Mr_Deng\Desktop\test.py======= {'three':3,'two':2,'one':1} True False >>>
3.6items和iteritems函数:items将所有的字典项以列表方式返回,列表中项来自(键,值),iteritems与items作用相似,但是返回的是一个迭代器对象而不是列表
#_*_coding:utf-8_*_ d={'one':1,'two':2,'three':3} printd list=d.items() forkey,valueinlist: printkey,':',value
运算结果:
=======RESTART:C:\Users\Mr_Deng\Desktop\test.py======= {'three':3,'two':2,'one':1} three:3 two:2 one:1 >>>
#_*_coding:utf-8_*_ d={'one':1,'two':2,'three':3} printd it=d.iteritems() fork,vinit: print"d[%s]="%k,v
运算结果:
=======RESTART:C:\Users\Mr_Deng\Desktop\test.py======= {'three':3,'two':2,'one':1} d[three]=3 d[two]=2 d[one]=1 >>>
3.7keys和iterkeys:keys将字典中的键以列表形式返回,iterkeys返回键的迭代器
#_*_coding:utf-8_*_ d={'one':1,'two':2,'three':3} printd printu'keys方法:' list=d.keys() printlist printu'\niterkeys方法:' it=d.iterkeys() forxinit: printx
运算结果:
=======RESTART:C:\Users\Mr_Deng\Desktop\test.py======= {'three':3,'two':2,'one':1} keys方法: ['three','two','one'] iterkeys方法: three two one >>>
3.8pop函数:删除字典中对应的键
#_*_coding:utf-8_*_ d={'one':1,'two':2,'three':3} printd d.pop('one') printd
运算结果:
=======RESTART:C:\Users\Mr_Deng\Desktop\test.py======= {'three':3,'two':2,'one':1} {'three':3,'two':2} >>>
3.9popitem函数:移出字典中的项
#_*_coding:utf-8_*_ d={'one':1,'two':2,'three':3} printd d.popitem() printd
运算结果:
=======RESTART:C:\Users\Mr_Deng\Desktop\test.py======= {'three':3,'two':2,'one':1} {'two':2,'one':1} >>>
3.10setdefault函数:类似于get方法,获取与给定键相关联的值,也可以在字典中不包含给定键的情况下设定相应的键值
#_*_coding:utf-8_*_ d={'one':1,'two':2,'three':3} printd printd.setdefault('one',1) printd.setdefault('four',4) printd
运算结果:
{'three':3,'two':2,'one':1} 1 4 {'four':4,'three':3,'two':2,'one':1} >>>
3.11update函数:用一个字典更新另外一个字典
#_*_coding:utf-8_*_ d={ 'one':123, 'two':2, 'three':3 } printd x={'one':1} d.update(x) printd
运算结果:
=======RESTART:C:\Users\Mr_Deng\Desktop\test.py======= {'three':3,'two':2,'one':123} {'three':3,'two':2,'one':1} >>>
3.12values和itervalues函数:values以列表的形式返回字典中的值,itervalues返回值得迭代器,由于在字典中值不是唯一的,所以列表中可以包含重复的元素
#_*_coding:utf-8_*_ d={ 'one':123, 'two':2, 'three':3, 'test':2 } printd.values()
运算结果:
=======RESTART:C:\Users\Mr_Deng\Desktop\test.py======= [2,3,2,123] >>>
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python字典操作技巧汇总》、《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。