一、字典(Dictionary)
字典是另一種可變容器模型,且可存儲任意類型對象。
值可以取任何數據類型,也可以嵌套多層,但鍵必須是不可變的,如字符串,數字或元組,這些鍵會轉為hash值存儲起來;鍵不可以是列表,布爾值,字典,因為這些不可以轉為hash值存儲起來。
字典是無序的,每次用print函數輸出的結果順序都不一定相同。
字典的每個鍵值 key=>value 對用冒號 : 分割,每個鍵值對之間用逗號 , 分割,整個字典包括在花括號 {} 中 ,格式如下所示:
info = {'k1' : 'v1' , 'k2' : 123 }
鍵 值 鍵 值
- 索引取值
info = { "k1": 18, 2: True, "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) } v = info['k1'] print(v) v = info[2] print(v) v = info['k3'][5]['kk3'][0] ##多層嵌套的取值 print(v)
輸出:
18
True
11
- del刪除
info = { "k1": 18, ##被刪除部分 2: True, "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', ##被刪除部分 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) } 輸出:{2: True, 'k3': [11, [], (), 22, 33, {'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
- for循環
info = { "k1": 18, 2: True, "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) } for item in info: print(item) ##默認輸出所有的key for item in info.keys(): print(item) ##輸出所有的key for item in info.values(): print(item) ##輸出所有的values for item in info.keys(): print(item,info[item]) ##輸出所有的key,並使用索引同時輸出key所對應的value for k,v in info.items(): print(k,v) ##同時取出key和value,分別賦值給k和v,然后輸出
輸出:
k1
2
k3
k4
k1
2
k3
k4
18
True
[11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
(11, 22, 33, 44)
k1 18
2 True
k3 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
k4 (11, 22, 33, 44)
k1 18
2 True
k3 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}]
k4 (11, 22, 33, 44)
二、python中字典的函數&方法
內置函數
內置方法
1.根據序列,創建字典,並指定統一的值
v = dict.fromkeys(["k1",123,"999"],123) #前邊的列表是所有的key, 后邊的123是值,將分別賦給三個key,即三個key的value都是123 print(v)
輸出:
2.根據Key獲取值,key不存在時,可以指定默認值(None)
dic = { "k1": 'v1', "k2": 'v2' } # v = dic['k11'] # print(v) ##使用索引,當key 'k11' 不存在時就會報錯,所以該方法有弊端 #v = dic.get('k11') #print(v) ##使用get方法,當key不存在時會輸出None #v = dic.get('k11',123) #print(v) ##get方法可以添加兩個參數,當指定的key不存在時,get方法會將括號內的第二個參數賦給key,當key已經存在時,第二個參數將會失效
3.刪除
- 刪除(用一個參數接收)
dic = { "k1": 'v1', "k2": 'v2' } v = dic.pop('k1') ##將取出的k1的值賦給v print(dic,v) dic = { "k1": 'v1', "k2": 'v2' } v = dic.pop('k11',90) ##當指定的key(k11)存在時,指定的value(90)會失效,k11不存在時,v等於指定的value90 print(dic,v)
輸出:
- 刪除(用兩個參數接收)
dic = { "k1": 'v1', "k2": 'v2' } k,v = dic.popitem() ##隨機刪除一對 print(dic,k,v)
輸出:
4 .設置值
已存在,不設置,獲取當前key對應的值
不存在,設置,獲取當前key對應的值
dic = { "k1": 'v1', "k2": 'v2' } v = dic.setdefault('k1','123') ##當key存在時,后邊指定的值會失效 print(dic,v)
v = dic.setdefault('k11','123') print(dic,v)
輸出:
5.更新(update)
dic = { "k1": 'v1', "k2": 'v2' } dic.update({'k1': '111111','k3': 123}) ##已存在的更新,不存在的加上去 print(dic) dic.update(k1=123,k3=345,k5="asdf") print(dic)
輸出:
三、補充
1.字符串
tempalte = "i am {name}, age : {age}" #v = tempalte.format(name='alex',age=19) ##和下面的方法效果相同 v = tempalte.format(**{"name": 'alex','age': 19}) ##加入兩個**即可將字典加入 print(v)
輸出:
2.字典
使用in時:
dic = {'k1' : 'v1' , 'k2' : 'v2' } v = 'k1' in dic print(v) ##輸出True v = 'v1' in dic print(v) ##輸出False 判斷values時,使用v = 'v1' in dic.values()
3.布爾值
bool值只有 False(0) 和True(1) 兩種
bool(...)經常用來判斷真假
bool值為False常見的有:0 、None、空字符串、空字典、空列表、空元組,其他都是True