本文实例讲述了Python字典及字典基本操作方法。分享给大家供大家参考,具体如下:
字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字、字符串、元组,这种结构类型也称之为映射。字典类型是Python中唯一內建的映射类型,基本的操作包括如下:
(1)len()
:返回字典中键—值对的数量;
(2)d[k]
:返回关键字对于的值;
(3)d[k]=v
:将值关联到键值k上;
(4)del d[k]
:删除键值为k的项;
(5)key in d
:键值key是否在d中,是返回True,否则返回False。
一、字典的创建
1.1 直接创建字典
d={'one':1,'two':2,'three':3} print d print d['two'] print d['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)] print u'items中的内容:' print items print u'利用dict创建字典,输出字典内容:' d=dict(items) print d print u'查询字典中的内容:' print d['one'] print d['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) print u'输出字典内容:' print d print u'查询字典中的内容:' print d['one'] print d['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} print d print "three is %(three)s." %d
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py======= {'four': 4, 'three': 3, 'two': 2, 'one': 1} three is 3. >
三、字典方法
3.1 clear函数:清除字典中的所有项
# _*_ coding:utf-8 _*_ d={'one':1,'two':2,'three':3,'four':4} print d d.clear() print d
运算结果:
=======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 print dd d={} print d print dd
运算结果:
=======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 print dd d.clear() print d print dd
运算结果:
=======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.2 copy函数:返回一个具有相同键值的新字典
# _*_ coding:utf-8 _*_ x={'one':1,'two':2,'three':3,'test':['a','b','c']} print u'初始X字典:' print x print u'X复制到Y:' y=x.copy() print u'Y字典:' print y y['three']=33 print u'修改Y中的值,观察输出:' print y print x print u'删除Y中的值,观察输出' y['test'].remove('c') print y print x
运算结果:
=======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 _*_ from copy import deepcopy x={} x['test']=['a','b','c','d'] y=x.copy() z=deepcopy(x) print u'输出:' print y print z print u'修改后输出:' x['test'].append('e') print y print z
运算输出:
=======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.3 fromkeys函数:使用给定的键建立新的字典,键默认对应的值为None
# _*_ coding:utf-8 _*_ d=dict.fromkeys(['one','two','three']) print d
运算输出:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py======= {'three': None, 'two': None, 'one': None} >
或者指定默认的对应值
# _*_ coding:utf-8 _*_ d=dict.fromkeys(['one','two','three'],'unknow') print d
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py======= {'three': 'unknow', 'two': 'unknow', 'one': 'unknow'} >
3.4 get函数:访问字典成员
# _*_ coding:utf-8 _*_ d={'one':1,'two':2,'three':3} print d print d.get('one') print d.get('four')
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py======= {'three': 3, 'two': 2, 'one': 1} 1 None >
注:get函数可以访问字典中不存在的键,当该键不存在是返回None
3.5 has_key函数:检查字典中是否含有给出的键
# _*_ coding:utf-8 _*_ d={'one':1,'two':2,'three':3} print d print d.has_key('one') print d.has_key('four')
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py======= {'three': 3, 'two': 2, 'one': 1} True False >
3.6 items和iteritems函数:items将所有的字典项以列表方式返回,列表中项来自(键,值),iteritems与items作用相似,但是返回的是一个迭代器对象而不是列表
# _*_ coding:utf-8 _*_ d={'one':1,'two':2,'three':3} print d list=d.items() for key,value in list: print key,':',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} print d it=d.iteritems() for k,v in it: 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.7 keys和iterkeys:keys将字典中的键以列表形式返回,iterkeys返回键的迭代器
# _*_ coding:utf-8 _*_ d={'one':1,'two':2,'three':3} print d print u'keys方法:' list=d.keys() print list print u'\niterkeys方法:' it=d.iterkeys() for x in it: print x
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py======= {'three': 3, 'two': 2, 'one': 1} keys方法: ['three', 'two', 'one'] iterkeys方法: three two one >
3.8 pop函数:删除字典中对应的键
# _*_ coding:utf-8 _*_ d={'one':1,'two':2,'three':3} print d d.pop('one') print d
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py======= {'three': 3, 'two': 2, 'one': 1} {'three': 3, 'two': 2} >
3.9 popitem函数:移出字典中的项
# _*_ coding:utf-8 _*_ d={'one':1,'two':2,'three':3} print d d.popitem() print d
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py======= {'three': 3, 'two': 2, 'one': 1} {'two': 2, 'one': 1} >
3.10 setdefault函数:类似于get方法,获取与给定键相关联的值,也可以在字典中不包含给定键的情况下设定相应的键值
# _*_ coding:utf-8 _*_ d={'one':1,'two':2,'three':3} print d print d.setdefault('one',1) print d.setdefault('four',4) print d
运算结果:
{'three': 3, 'two': 2, 'one': 1} 1 4 {'four': 4, 'three': 3, 'two': 2, 'one': 1} >
3.11 update函数:用一个字典更新另外一个字典
# _*_ coding:utf-8 _*_ d={ 'one':123, 'two':2, 'three':3 } print d x={'one':1} d.update(x) print d
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py======= {'three': 3, 'two': 2, 'one': 123} {'three': 3, 'two': 2, 'one': 1} >
3.12 values和itervalues函数:values以列表的形式返回字典中的值,itervalues返回值得迭代器,由于在字典中值不是唯一的,所以列表中可以包含重复的元素
# _*_ coding:utf-8 _*_ d={ 'one':123, 'two':2, 'three':3, 'test':2 } print d.values()
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py======= [2, 3, 2, 123] >
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python字典操作技巧汇总》、《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】