一、字典

  python中的字典不是序列,而是一种映射;不通过位置而是通过键存储。字典是可变的。

  1、字典的映射操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#字典的创建
>>> d1 = { 'k1' : 'v1' , 'k2' : 'v2' }
>>> d2 = dict(k1= 'v1' ,k2= 'v2' )
 
使用{}定义字典,以key:value形式存储数据,在字典中key是唯一的
>>> one_dict = { 'name' : "jym" , 'age' :23, 'addr' : 'xinjiang' }
#通过key查找数据
>>> one_dict[ 'name' ]
'jym
 
#修改
>>> one_dict[ 'name' ] =  "Jym"
>>> print(one_dict)
{ 'name' 'Jym' 'age' : 23,  'addr' 'xinjiang' }
>>> one_dict[ 'age' ] += 1
>>> print(one_dict)
{ 'name' 'Jym' 'age' : 24,  'addr' 'xinjiang' }
 
#添加,直接赋值不在字典中的键,会创建该键值
>>> one_dict[ 'job' ] =  "ops"
>>> print(one_dict)
{ 'name' 'Jym' 'age' : 24,  'addr' 'xinjiang' 'job' 'ops' }
 
#字典的嵌套
>>> two_dict = { 'name' :{ 'first' : "jy" , 'last' : "meng" }, 'age' :32, 'addr' :[ 'sh' , 'xj' ]}
>>> two_dict[ 'name' ][ 'first' ]
'jy'
>>> two_dict[ 'addr' ][0]
'sh'

 

   2、字典的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#清空字典
>>> two_dict. clear ()
>>> print(two_dict)
{}
 
#删除方法一
>>> two_dict = { 'name' :{ 'first' : "jy" , 'last' : "meng" }, 'age' :32, 'addr' :[ 'sh' , 'xj' ]}
>>> two_dict[ 'name' ].pop( 'first' )
'jy'
>>> print(two_dict)
{ 'name' : { 'last' 'meng' },  'age' : 32,  'addr' : [ 'sh' 'xj' ]}
 
#删除方法二
>>> del two_dict[ 'name' ][ 'last' ]
>>> print(two_dict)
{ 'name' : {},  'age' : 32,  'addr' : [ 'sh' 'xj' ]}
 
#获取字典中value,使用get方法好处是如果你要获取的key值不存在,不报错,默认返回None,可自行给值
>>> get_dict = two_dict.get( 'age' )
>>> print(get_dict)
32
>>> two_dict = { 'name' :{ 'first' : "jy" , 'last' : "meng" }, 'age' :32, 'addr' :[ 'sh' , 'xj' ]}
>>> print(two_dict.get( 'job' ))
None
>>> print(two_dict.get( "job" , 'replace' ))
replace
 
#通过一个字典更新另一个字典,如果两个字典键值相同,那么以要被更新的字典为准
>>> two_dict.update(one_dict)
>>> print(two_dict)
{ 'name' 'Jym' 'age' : 24,  'addr' 'xinjiang' 'job' 'ops' }
 
#将字典转变为列表(少用)
>>> print(two_dict)
{ 'name' 'Jym' 'age' : 24,  'addr' 'xinjiang' 'job' 'ops' }
>>> print(two_dict.items())
dict_items([( 'name' 'Jym' ), ( 'age' , 24), ( 'addr' 'xinjiang' ), ( 'job' 'ops' )])
 
#取字典的values值
>>> print(two_dict.values())
dict_values([ 'Jym' , 24,  'xinjiang' 'ops' ])
 
#取字典的keys值
>>> print(two_dict.keys())
dict_keys([ 'name' 'age' 'addr' 'job' ])
 
#判断key值是否在字典中
>>>  'name'  in  two_dict
True
 
#取一个key值,如果存在,即取出,如果不存在,就在字典中加入该kv值
>>> print(two_dict.setdefault( 'name' ))
Jym
>>> print(two_dict.setdefault( 'name1' , "newkv" ))
newkv
>>> print(two_dict)
{ 'name' 'Jym' 'age' : 24,  'addr' 'xinjiang' 'job' 'ops' 'name1' 'newkv' }
 
#给定列表,将列表中的值取出作为key生成字典
>>> print(dict.fromkeys([1,2,3,4], 'newvalue' ))
{1:  'newvalue' , 2:  'newvalue' , 3:  'newvalue' , 4:  'newvalue' }
 
#随机删除字典中的kv值(慎用)
>>> two_dict.popitem()
( 'name1' 'newkv' )
>>> print(two_dict)
{ 'name' 'Jym' 'age' : 24,  'addr' 'xinjiang' 'job' 'ops' }
>>> two_dict.popitem()
( 'job' 'ops' )
>>> print(two_dict)
{ 'name' 'Jym' 'age' : 24,  'addr' 'xinjiang' }

   

   3、字典排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
第一种方法
#将字典的key值取出换为列表存储
sort_list = list(id_db.keys())
#使用列表的方法排序
sort_list. sort ()
#按照顺序打印字典
for  key  in  sort_list:
     print(key,id_db[key])
结果:
C:\Python36\python36.exe C: /Users/Administrator/PycharmProjects/cto3/day2/dictionary .py
659001199601105413 { 'name' 'jonny' 'age' : 18,  'addr' 'xj' }
659001199701105413 { 'name' 'david' 'age' : 17,  'addr' 'sh' }
659001199801105413 { 'name' 'george' 'age' : 16,  'addr' 'gz' }
        
第二种方法
for  key  in  sorted(id_db):
     print(key,id_db[key])