1、 字典spa
1.、 列表能夠存儲大量的數據類型,可是若是數據量大的話,他的查詢速度比較慢。code
2.、 列表只能按照順序存儲,數據與數據之間關聯性不強。對象
因此針對於上的缺點,須要引入另外一種容器型的數據類型,解決上面的問題,這就須要dict字典。blog
不可變(可哈希)的數據類型:int,str,bool,tuple。排序
可變(不可哈希)的數據類型:list,dict,set。three
字典是Python語言中的映射類型,他是以{}括起來,裏面的內容是以鍵值對的形式儲存的:ip
Key: 不可變(可哈希)的數據類型.而且鍵是惟一的,不重複的。內存
Value:任意數據(int,str,bool,tuple,list,dict,set),包括後面要學的實例對象等。get
在Python3.5版本(包括此版本)以前,字典是無序的。it
在Python3.6版本以後,字典會按照初建字典時的順序排列(即第一次插入數據的順序排序)。
固然,字典也有缺點:他的缺點就是內存消耗巨大。
2、 建立:
# 方式1:
dic = dict((('one', 1),('two', 2),('three', 3))) # dic = dict([('one', 1),('two', 2),('three', 3)]) print(dic) # {'one': 1, 'two': 2, 'three': 3}
# 方式2:
dic = dict(one=1,two=2,three=3) print(dic) # {'one': 1, 'two': 2, 'three': 3}
# 方式3:
dic = dict({'one': 1, 'two': 2, 'three': 3}) print(dic) # {'one': 1, 'two': 2, 'three': 3}
# 方式5: 後面會講到先了解
dic = dict(zip(['one', 'two', 'three'],[1, 2, 3])) print(dic)
# 方式6: 字典推導式 後面會講到
dic = { k: v for k,v in [('one', 1),('two', 2),('three', 3)]} print(dic)
# 方式7:利用fromkey。
dic = dict.fromkeys('abcd','太白') print(dic) # {'a': '太白', 'b': '太白', 'c': '太白', 'd': '太白'}
3、 增
一、 經過鍵值對直接增長
dic = {'name': '太白', 'age': 18} dic['weight'] = 75 # 沒有weight這個鍵,就增長鍵值對 print(dic) # {'name': '太白', 'age': 18, 'weight': 75} dic['name'] = 'barry' # 有name這個鍵,就成了字典的改值 print(dic) # {'name': 'barry', 'age': 18, 'weight': 75}
二、 setdefault
dic = {'name': '太白', 'age': 18} dic.setdefault('height',175) # 沒有height此鍵,則添加 print(dic) # {'name': '太白', 'age': 18, 'height': 175} dic.setdefault('name','barry') # 有此鍵則不變 print(dic) # {'name': '太白', 'age': 18, 'height': 175} #它有返回值 dic = {'name': '太白', 'age': 18} ret = dic.setdefault('name') print(ret) # 太白
4、 刪
一、 pop 經過key刪除字典的鍵值對,有返回值,可設置返回值。
dic = {'name': '太白', 'age': 18} # ret = dic.pop('name') # print(ret,dic) # 太白 {'age': 18} ret1 = dic.pop('n',None) print(ret1,dic) # None {'name': '太白', 'age': 18}
二、 popitem 3.5版本以前,popitem爲隨機刪除,3.6以後爲刪除最後一個,有返回值
dic = {'name': '太白', 'age': 18} ret = dic.popitem() print(ret,dic) # ('age', 18) {'name': '太白'}
三、 clear 清空字典
dic = {'name': '太白', 'age': 18} dic.clear() print(dic) # {}
四、 del 經過鍵刪除鍵值對
dic = {'name': '太白', 'age': 18} del dic['name'] print(dic) # {'age': 18}
五、 刪除整個字典
del dic
5、 改
一、 經過鍵值對直接改
dic = {'name': '太白', 'age': 18} dic['name'] = 'barry' print(dic) # {'name': 'barry', 'age': 18}
二、 update
dic = {'name': '太白', 'age': 18} dic.update(sex='男', height=175) print(dic) # {'name': '太白', 'age': 18, 'sex': '男', 'height': 175} dic = {'name': '太白', 'age': 18} dic.update([(1, 'a'),(2, 'b'),(3, 'c'),(4, 'd')]) print(dic) # {'name': '太白', 'age': 18, 1: 'a', 2: 'b', 3: 'c', 4: 'd'} dic1 = {"name":"jin","age":18,"sex":"male"} dic2 = {"name":"alex","weight":75} dic1.update(dic2) print(dic1) # {'name': 'alex', 'age': 18, 'sex': 'male', 'weight': 75} print(dic2) # {'name': 'alex', 'weight': 75}
6、 查
一、 經過鍵查詢 直接dic[key](沒有此鍵會報錯)
dic = {'name': '太白', 'age': 18} print(dic['name']) # 太白
二、 get
dic = {'name': '太白', 'age': 18} v = dic.get('name') print(v) # '太白' v = dic.get('name1') print(v) # None v = dic.get('name2','沒有此鍵') print(v) # 沒有此鍵
三、 keys()
dic = {'name': '太白', 'age': 18} print(dic.keys()) # dict_keys(['name', 'age'])
四、 values()
dic = {'name': '太白', 'age': 18} print(dic.values()) # dict_values(['太白', 18])
五、 items()
dic = {'name': '太白', 'age': 18} print(dic.items()) # dict_items([('name', '太白'), ('age', 18)])