本文实例讲述了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