Python 字典类型及相关操作
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
创建字典:
1
2
3
4
|
dic1 = { 'name' : 'alex' , 'age' : 36 , 'sex' : 'male' } dic2 = dict ((( 'name' , 'alex' ),)) print (dic1) print (dic2) |
对应操作:
1 增
1
2
3
4
5
6
7
8
9
10
|
dic3 = {} dic3[ 'name' ] = 'alex' dic3[ 'age' ] = 18 print (dic3) #{'name': 'alex', 'age': 18} a = dic3.setdefault( 'name' , 'yuan' ) b = dic3.setdefault( 'ages' , 22 ) print (a,b) print (dic3) |
2 查
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
dic3 = { 'name' : 'alex' , 'age' : 18 } # print(dic3['name']) # print(dic3['names']) # # print(dic3.get('age',False)) # print(dic3.get('ages',False)) print (dic3.items()) print (dic3.keys()) print (dic3.values()) print ( 'name' in dic3) # py2: dic3.has_key('name') print ( list (dic3.values())) |
3 改
1
2
3
4
5
6
|
dic3 = { 'name' : 'alex' , 'age' : 18 } dic3[ 'name' ] = 'alvin' dic4 = { 'sex' : 'male' , 'hobby' : 'girl' , 'age' : 36 } dic3.update(dic4) print (dic3) |
4 删
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
dic4 = { 'name' : 'alex' , 'age' : 18 , 'class' : 1 } # dic4.clear() # print(dic4) del dic4[ 'name' ] print (dic4) a = dic4.popitem() print (a,dic4) # print(dic4.pop('age')) # print(dic4) # del dic4 # print(dic4) |
5 其他操作以及涉及到的方法
5.1 dict.fromkeys
1
2
3
4
5
6
7
8
9
10
|
d1 = dict .fromkeys([ 'host1' , 'host2' , 'host3' ], 'Mac' ) print (d1) d1[ 'host1' ] = 'xiaomi' print (d1) ####### d2 = dict .fromkeys([ 'host1' , 'host2' , 'host3' ],[ 'Mac' , 'huawei' ]) print (d2) d2[ 'host1' ][ 0 ] = 'xiaomi' print (d2) |
5.2 d.copy() 对字典 d 进行浅复制,返回一个和d有相同键值对的新字典
5.3 字典的嵌套
View Code
5.4 sorted(dict) : 返回一个有序的包含字典所有key的列表
1
2
|
dic = { 5 : '555' , 2 : '222' , 4 : '444' } print ( sorted (dic)) |
5.5 字典的遍历
1
2
3
4
5
6
7
8
9
|
dic5 = { 'name' : 'alex' , 'age' : 18 } for i in dic5: print (i,dic5[i]) for items in dic5.items(): print (items) for keys,values in dic5.items(): print (keys,values) |
还用我们上面的例子,存取这个班学生的信息,我们如果通过字典来完成,那:
1
2
3
4
|
dic = { 'zhangsan' :{ 'age' : 23 , 'sex' : 'male' }, '李四' :{ 'age' : 33 , 'sex' : 'male' }, 'wangwu' :{ 'age' : 27 , 'sex' : 'women' } } |