Python 数据类型的操作——字典

 

字典


字典是无序的
字典关联性强
字典元素为键值对 且 键 唯一 键 是 可哈西的(不可变数据类型:int str bool tuple)
不可哈西(list dict set)
字典是唯一一个映射的数据类型

1 dic_1 = {'name':'Tom','age':20}
2 dic_2 = {'class_1':['Tom','xiaoming','ligang'],'class_2':['张三','李四','王五']}
3 
4 键是唯一的  
5 dic = {'name':'Tom','name':'李刚','age':20}
6 print(dic)    #两个'name'

一、增

dic[key] = value

原字典已经存在key 覆盖

如果没有,则添加

1 dic = {'name':'Tom','son':'李刚','age':20}
2 dic['job'] = 'teacher'
3 print(dic)
4 # {'name': 'Tom', 'son': '李刚', 'age': 20, 'job': 'teacher'}
5 dic = {'name':'Tom','son':'李刚','age':20}
6 dic['son'] = '张三'
7 print(dic)
8 # {'name': 'Tom', 'son': '张三', 'age': 20}

setdefault(self, key, default = None)

键没有,添加

已经有键,不操作

1 dic = {'name':'Tom','son':'李刚','age':20}
2 dic.setdefault('hobby')                          #default没有的情况,默认为None
3 # {'name': 'Tom', 'son': '李刚', 'age': 20, 'hobby': None}          #None  就是空   分配给一个特殊的所有的空的公共内存空间
4 dic = {'name':'Tom','son':'李刚','age':20}
5 dic.setdefault('hobby','girls')
6 # {'name': 'Tom', 'son': '李刚', 'age': 20, 'hobby': 'girls'}
7 dic = {'name':'Tom','son':'李刚','age':20}
8 dic.setdefault('name','王五')                        #字典中已经有'name'  key ,就不对字典做任何修改
9 # {'name': 'Tom', 'son': '李刚', 'age': 20}      #

二、删

pop(self, key)

通过键删除

如果键不存在,报错

 

 1 dic = {'name':'Tom','son':'李刚','age':20}
 2 print(dic.pop('name'))                    #通过键删除
 3 print(dic)
 4 # Tom
 5 # {'son': '李刚', 'age': 20}
 6 
 7 dic = {'name':'Tom','son':'李刚','age':20}
 8 print(dic.pop('city'))                             #如果键不存在,报错  KeyError:***
 9 print(dic)
10 
11 # Traceback (most recent call last):
12 #   File "D:/Demo/test2.py", line 2, in <module>
13 #     print(dic.pop('city'))
14 # KeyError: 'city'
15 
16 dic = {'name':'Tom','son':'李刚','age':20}
17 print(dic.pop('city',None))                #加上返回值None,且键不存在,说明key不存在, 当然也可以把None换成 '不存在'
18 print(dic)  
19 # None
20 # {'name': 'Tom', 'son': '李刚', 'age': 20}
pop

popitem(self)

随机删  有返回值(被删除的键值对)

dic = {'name':'Tom','son':'李刚','age':20}
print(dic.popitem())
print(dic)
# ('age', 20)
# {'name': 'Tom', 'son': '李刚'}

clear(self)

清空

1 dic = {'name':'Tom','son':'李刚','age':20}
2 print(dic.clear())
3 print(dic)
4 # None
5 # {}

del

1 dic = {'name':'Tom','son':'李刚','age':20}
2 del dic['name']
3 print(dic)
4 # {'son': '李刚', 'age': 20}

del dic   #删除整个字典

 

三、改

就是增功能中的覆盖

1 dic = {'name':'Tom','son':'李刚','age':20}
2 dic['name'] = '王五'
3 print(dic)
4 # {'name': '王五', 'son': '李刚', 'age': 20}

更新 update(self, E=None, **F)

覆盖并添加

1 dic1 = {'name':'Tom','age':20}
2 dic2 = {'name':'王五','pc':8888}
3 dic1.update(dic2)
4 print(dic1)                 #dic1变了   dic2没有变
5 print(dic2)
6 # {'name': '王五', 'age': 20, 'pc': 8888}
7 # {'name': '王五', 'pc': 8888}

 

四、查

 get(self, k: _KT)

 

 1 dic = {'name':'Tom','age':20}
 2 print(dic.get('name'))
 3 # Tom
 4 
 5 dic = {'name':'Tom','age':20}
 6 print(dic.get('heheh'))
 7 # None
 8 
 9 dic = {'name':'Tom','age':20}
10 print(dic.get('heheh','键不存在 -1'))
11 # 键不存在 -1

for 循环

得到的是列表,然后列表就可以用for循环打印

 1 #1.  keys()
 2 dic = {'name':'Tom','age':20,'job':'teacher'}
 3 for key in dic:    #  for i in dic           for key in dic.keys()
 4     print(key)      # print(i)                 print(key)                 一样的效果
 5 # name
 6 # age
 7 # job
 8 #2.  values()
 9 dic = {'name':'Tom','age':20,'job':'teacher'}
10 print(dic.values(),type(dic.values()))       #直接print
11 # dict_values(['Tom', 20, 'teacher']) <class 'dict_values'>
12 for value in dic.values():
13     print(value)
14 # Tom
15 # 20
16 # teacher
17 #3.   items()
18 
19 dic = {'name':'Tom','age':20,'job':'teacher'}
20 print(dic.items(),type(dic.items()))
21 # dict_items([('name', 'Tom'), ('age', 20), ('job', 'teacher')]) <class 'dict_items'>
22 for i in dic.items():
23     print(i)
24 # ('name', 'Tom')
25 # ('age', 20)
26 # ('job', 'teacher')
27 #--------------------
28 a,b = [1,2]
29 print(a,b)                         #分别赋值
30 # 1 2
31 
32 dic = {'name':'Tom','age':20,'job':'teacher'}
33 for key, value in dic.items():    #key, value  分别接收数据
34     print(key,value)
35 # name Tom
36 # age 20
37 # job teacher
38 print(type(key),type(value))       #得到的是字符串
39 # <class 'str'> <class 'str'>
for 循环

 

 

 

 

 

 

 
posted @ 2017-10-26 22:28  静静别跑  阅读(301)  评论(0)    收藏  举报