本文实例讲述了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 直接创建字典
1
2
3
4
|
d = { 'one' : 1 , 'two' : 2 , 'three' : 3 } print d print d[ 'two' ] print d[ 'three' ] |
运算结果:
1
2
3
4
5
|
= = = = = = = RESTART: C:\Users\Mr_Deng\Desktop\test.py = = = = = = = { 'three' : 3 , 'two' : 2 , 'one' : 1 } 2 3 >>> |
1.2 通过dict创建字典
1
2
3
4
5
6
7
8
9
10
|
# _*_ 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' ] |
运算结果:
1
2
3
4
5
6
7
8
9
|
= = = = = = = 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 >>> |
或者通过关键字创建字典
1
2
3
4
5
6
7
|
# _*_ coding:utf-8 _*_ d = dict (one = 1 ,two = 2 ,three = 3 ) print u '输出字典内容:' print d print u '查询字典中的内容:' print d[ 'one' ] print d[ 'three' ] |
运算结果:
1
2
3
4
5
6
7
|
= = = = = = = RESTART: C:\Users\Mr_Deng\Desktop\test.py = = = = = = = 输出字典内容: { 'three' : 3 , 'two' : 2 , 'one' : 1 } 查询字典中的内容: 1 3 >>> |
二、字典的格式化字符串
1
2
3
4
|
# _*_ coding:utf-8 _*_ d = { 'one' : 1 , 'two' : 2 , 'three' : 3 , 'four' : 4 } print d print "three is %(three)s." % d |
运算结果:
1
2
3
4
|
= = = = = = = RESTART: C:\Users\Mr_Deng\Desktop\test.py = = = = = = = { 'four' : 4 , 'three' : 3 , 'two' : 2 , 'one' : 1 } three is 3. >>> |
三、字典方法
3.1 clear函数:清除字典中的所有项
1
2
3
4
5
|
# _*_ coding:utf-8 _*_ d = { 'one' : 1 , 'two' : 2 , 'three' : 3 , 'four' : 4 } print d d.clear() print d |
运算结果:
1
2
3
4
|
= = = = = = = RESTART: C:\Users\Mr_Deng\Desktop\test.py = = = = = = = { 'four' : 4 , 'three' : 3 , 'two' : 2 , 'one' : 1 } {} >>> |
请看下面两个例子
3.1.1
1
2
3
4
5
6
7
8
9
|
# _*_ coding:utf-8 _*_ d = {} dd = d d[ 'one' ] = 1 d[ 'two' ] = 2 print dd d = {} print d print dd |
运算结果:
1
2
3
4
5
|
= = = = = = = RESTART: C:\Users\Mr_Deng\Desktop\test.py = = = = = = = { 'two' : 2 , 'one' : 1 } {} { 'two' : 2 , 'one' : 1 } >>> |
3.1.2
1
2
3
4
5
6
7
8
9
|
# _*_ coding:utf-8 _*_ d = {} dd = d d[ 'one' ] = 1 d[ 'two' ] = 2 print dd d.clear() print d print dd |
运算结果:
1
2
3
4
5
|
= = = = = = = 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函数:返回一个具有相同键值的新字典
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# _*_ 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 |
运算结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
= = = = = = = 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
函数使用深复制,复制其包含所有的值,这个方法可以解决由于副本修改而使原始字典也变化的问题。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# _*_ 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 |
运算输出:
1
2
3
4
5
6
7
8
|
= = = = = = = 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
1
2
3
|
# _*_ coding:utf-8 _*_ d = dict .fromkeys([ 'one' , 'two' , 'three' ]) print d |
运算输出:
1
2
3
|
= = = = = = = RESTART: C:\Users\Mr_Deng\Desktop\test.py = = = = = = = { 'three' : None , 'two' : None , 'one' : None } >>> |
或者指定默认的对应值
1
2
3
|
# _*_ coding:utf-8 _*_ d = dict .fromkeys([ 'one' , 'two' , 'three' ], 'unknow' ) print d |
运算结果:
1
2
3
|
= = = = = = = RESTART: C:\Users\Mr_Deng\Desktop\test.py = = = = = = = { 'three' : 'unknow' , 'two' : 'unknow' , 'one' : 'unknow' } >>> |
3.4 get函数:访问字典成员
1
2
3
4
5
|
# _*_ coding:utf-8 _*_ d = { 'one' : 1 , 'two' : 2 , 'three' : 3 } print d print d.get( 'one' ) print d.get( 'four' ) |
运算结果:
1
2
3
4
5
|
= = = = = = = RESTART: C:\Users\Mr_Deng\Desktop\test.py = = = = = = = { 'three' : 3 , 'two' : 2 , 'one' : 1 } 1 None >>> |
注:get函数可以访问字典中不存在的键,当该键不存在是返回None
3.5 has_key函数:检查字典中是否含有给出的键
1
2
3
4
5
|
# _*_ coding:utf-8 _*_ d = { 'one' : 1 , 'two' : 2 , 'three' : 3 } print d print d.has_key( 'one' ) print d.has_key( 'four' ) |
运算结果:
1
2
3
4
5
|
= = = = = = = RESTART: C:\Users\Mr_Deng\Desktop\test.py = = = = = = = { 'three' : 3 , 'two' : 2 , 'one' : 1 } True False >>> |
3.6 items和iteritems函数:items将所有的字典项以列表方式返回,列表中项来自(键,值),iteritems与items作用相似,但是返回的是一个迭代器对象而不是列表
1
2
3
4
5
6
|
# _*_ coding:utf-8 _*_ d = { 'one' : 1 , 'two' : 2 , 'three' : 3 } print d list = d.items() for key,value in list : print key, ':' ,value |
运算结果:
1
2
3
4
5
6
|
= = = = = = = RESTART: C:\Users\Mr_Deng\Desktop\test.py = = = = = = = { 'three' : 3 , 'two' : 2 , 'one' : 1 } three : 3 two : 2 one : 1 >>> |
1
2
3
4
5
6
|
# _*_ 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 |
运算结果:
1
2
3
4
5
6
|
= = = = = = = 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返回键的迭代器
1
2
3
4
5
6
7
8
9
10
|
# _*_ 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 |
运算结果:
1
2
3
4
5
6
7
8
9
|
= = = = = = = 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函数:删除字典中对应的键
1
2
3
4
5
|
# _*_ coding:utf-8 _*_ d = { 'one' : 1 , 'two' : 2 , 'three' : 3 } print d d.pop( 'one' ) print d |
运算结果:
1
2
3
4
|
= = = = = = = RESTART: C:\Users\Mr_Deng\Desktop\test.py = = = = = = = { 'three' : 3 , 'two' : 2 , 'one' : 1 } { 'three' : 3 , 'two' : 2 } >>> |
3.9 popitem函数:移出字典中的项
1
2
3
4
5
|
# _*_ coding:utf-8 _*_ d = { 'one' : 1 , 'two' : 2 , 'three' : 3 } print d d.popitem() print d |
运算结果:
1
2
3
4
|
= = = = = = = RESTART: C:\Users\Mr_Deng\Desktop\test.py = = = = = = = { 'three' : 3 , 'two' : 2 , 'one' : 1 } { 'two' : 2 , 'one' : 1 } >>> |
3.10 setdefault函数:类似于get方法,获取与给定键相关联的值,也可以在字典中不包含给定键的情况下设定相应的键值
1
2
3
4
5
6
|
# _*_ coding:utf-8 _*_ d = { 'one' : 1 , 'two' : 2 , 'three' : 3 } print d print d.setdefault( 'one' , 1 ) print d.setdefault( 'four' , 4 ) print d |
运算结果:
1
2
3
4
5
|
{ 'three' : 3 , 'two' : 2 , 'one' : 1 } 1 4 { 'four' : 4 , 'three' : 3 , 'two' : 2 , 'one' : 1 } >>> |
3.11 update函数:用一个字典更新另外一个字典
1
2
3
4
5
6
7
8
9
10
|
# _*_ coding:utf-8 _*_ d = { 'one' : 123 , 'two' : 2 , 'three' : 3 } print d x = { 'one' : 1 } d.update(x) print d |
运算结果:
1
2
3
4
|
= = = = = = = 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返回值得迭代器,由于在字典中值不是唯一的,所以列表中可以包含重复的元素
1
2
3
4
5
6
7
8
|
# _*_ coding:utf-8 _*_ d = { 'one' : 123 , 'two' : 2 , 'three' : 3 , 'test' : 2 } print d.values() |
运算结果:
1
2
3
|
= = = = = = = RESTART: C:\Users\Mr_Deng\Desktop\test.py = = = = = = = [ 2 , 3 , 2 , 123 ] >>> |
希望本文所述对大家Python程序设计有所帮助。
原文链接:http://blog.csdn.net/m0_37870649/article/details/79057944