tuple 元組
一、tuple 類的基本屬性
1.元組,有序;
元素不可被修改,不能被增加或者刪除
tuple類
tu = (111,22,33,44)
一般寫元組的時候,推薦在最后加入,和類方法進行區別
tu2 = (111,"root",(11,22),[(33,44)],True,22,33,44,)
元組的一級元素不可修改、增加或刪除
tu = (111,"root",(11,22),[(33,44)],True,22,33,44,) v = tu[3] v.extend((11,)) print(tu) #(111, 'root', (11, 22), [(33, 44), 11], True, 22, 33, 44)
2.元組索引

tu = (111,"root",(11,22),[(33,44)],True,22,33,44,) v = tu[0] print(v) n = tu[3][0][0] #注意這里 print(n) #111 #33
3.元組切片

tu = (111,"root",(11,22),[(33,44)],True,22,33,44,) v = tu[0:2] print(v) #(111, 'root')
*** v = tu[0] 和 del tu[0] 都是錯誤的,因為元組不能被修改、添加和刪除
4.可迭代對象
元組成為被迭代對象,可以被 for 循環

tu = (111,"root",(11,22),[(33,44)],True,22,33,44,) for item in tu: print(item) #111 #root #(11, 22) #[(33, 44)] #True #22 #33 #44
元組成為被迭代對象,添加進 list 列表中

li = ["root","even"] li.extend((11,22,33,)) print(li) #['root', 'even', 11, 22, 33]
5.元組的轉換
把字符串轉換成 tuple 元組

s = "root" v = tuple(s) print(v) #('r', 'o', 'o', 't')
把 list 列表轉換成 tuple 元組

li = ["even",123] v = tuple(li) print(v) #('even', 123)
把 tuple 元組轉換成 list 列表

tu = (123,123,"root") v = list(tu) print(v) #[123, 123, 'root']
元組轉換成字符串(既有數字又有字符串的情況)
需要自己寫 for 循環一個一個處理
tu = (11,22,33,"123","even") s = "" for i in tu: s = s + str(i) print(s) #112233123even
元組轉換成字符串(列表中的元素只有字符串的情況)
直接使用字符串 join 方法
tu = ("123","alex") #這里的"123"不是數字 v = "_".join(tu) print(v) #123alex
二、tuple 類的方法
1.count
統計某個值出現的次數(類似list類中的意義)

tu = (111,"root",(11,22),[(33,44)],True,22,33,44,) n = tu.count(22) print(n) #1
2.index
找到某個值的索引位置(類似list類中的意義)

tu = (111,"root",(11,22),[(33,44)],True,22,33,44,) n = tu.index(22) print(n) #5
三、tuple 類 —— 總而言之
在創建數據不允許被修改的時候,使用tuple類
除非把tuple轉換成list,否則無法對其修改
dict 字典
一、dict 類的基本屬性
1.字典的基本結構
info = {"k1":"v1","k2":"v2"} info = { "k1":"v1", #鍵值對(一個鍵key和一個值value生成的一對) "k2":"v2" }
2.值 - value
字典的value可以是任何值
info = { "k1": 18, "k2": True, "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) } print(info) #{'k1': 18, 'k2': True, 'k3': [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
3.鍵 - key
*** list列表、dict字典不能作為字典的 key
info ={ 1: 'asdf', "k1": 'asdf', True: "123", #True布爾值作為key,為1,因為上面已經有1作為key,所以這里輸出會直接跳過,但布爾值可以作為key # [11,22]: 123 列表作為key,ide會直接報錯 (11,22): 123, # {'k1':'v1'}: 123 字典作為key,ide會直接報錯 } print(info)
4.字典無序 (Python3.6版本后改為有序)
PS:這個地方因為我在輸出的時候,無論如何都是按照 key和 value對應的順序輸出,所以得出的結論,查詢網上的資料后發現 3.6 版本后 dict改成了有序,
Python2.7待測試

info = { "k1": 18, "k2": True, "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) } print(info) #{'k1': 18, 'k2': True, 'k3': [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
5.通過索引方式找到指定元素

info = { "k1": 18, 2: True, "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) } v = info['k3'][5]['kk3'][0] print(v) #11
6.字典支持 del 刪除

info = { "k1": 18, 2: True, "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) } del info['k1'] #刪除k1的key和value del info['k3'][5]['kk1'] #刪除kk1的key和value print(info) #{2: True, 'k3': [11, [], (), 22, 33, {'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
7.判斷

dic = { "k1": 'Q' } v1 = "k1" in dic #判斷k1是否在字典中 print(v1) v2 = "Q" in dic.values() #判斷Q是否在字典的values中 print(v2) #True #True
8.for 循環和 dict 類的一些方法
for item in info:
dict 字典在 for 循環的時候,默認循環輸出鍵值 key

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) #k1 #2 #k3 #k4
for item in info.keys():
效果所以等同於上面代碼

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.keys(): print(item) #k1 #2 #k3 #k4
for item in info.values():
for 循環輸出 value 的值

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.values(): print(item) #18 #True #[11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}] #(11, 22, 33, 44)
for item in info.keys():
print(item,info[item])
既輸出 key也輸出 value

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.keys(): print(item,info[item]) #k1 18 #2 True #k3 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}] #k4 (11, 22, 33, 44)
for k,v in info.items():
print(k,v)
另一種既輸出 key 也輸出 value 的方法

info = { "k1": 18, 2: True, "k3": [ 11, [], (), 22, 33, { 'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11,22), } ], "k4": (11,22,33,44) } for k,v in info.items(): #將key賦值給k,將value賦值給v print(k,v) #k1 18 #2 True #k3 [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}] #k4 (11, 22, 33, 44)
二、dict 類的方法
1.靜態方法fromkeys
根據序列,創建字典,並且指定統一的值

v = dict.fromkeys(["k1",123,"999"]) print(v) #{'k1': None, 123: None, '999': None} v = dict.fromkeys(["k1",123,"999"],111) print(v) #{'k1': 111, 123: 111, '999': 111}
2.get
根據 key 獲取值,key不存在時(None),可以指定附加值

dic = { "k1":'v1' } v1 = dic.get('k1',1111) #當k1有自己的value時,忽略后面附加值 v2 = dic.get('k2') #當沒有k2,后面也沒有加附加值時,輸出None v3 = dic.get('k3',3333) #當沒有k3,但后面有附加值時,輸出附加值 print(v1) print(v2) print(v3) #v1 #None #3333
3.pop
刪除,並得到被刪除的值

dic = { "k1":'v1', "k2":'v2' } v = dic.pop('k1') print(v) #輸出被刪除的值 print(dic) #輸出刪除操作之后的dic #v1 #{'k2': 'v2'}
4.popitem
隨機刪除鍵值對,並得到被刪除的鍵值對

dic = { "k1":'v1', "k2":'v2' } n = dic.popitem() print(n) #輸出被隨機刪除的鍵值對 print(dic) #輸出被隨機刪除操作之后的dic #('k2', 'v2') #{'k1': 'v1'}
5.setdefault
設置值,若已經存在,則不設置。只獲取當前 key所對應的 value
若不存在,則設置值。並獲取當前 key對應的 value

dic = { "k1":'v1', "k2":'v2' } n1 = dic.setdefault('k1','123') print(dic,n1) n2 = dic.setdefault('k111','112233') print(dic,n2) #{'k1': 'v1', 'k2': 'v2'} v1 #{'k1': 'v1', 'k2': 'v2', 'k111': '112233'} 112233
6.update
已經存在的,進行覆蓋新值;不存在的,進行更新

dic = { "k1":'v1', "k2":'v2' } dic.update({'k1':'11111','k3':123}) print(dic) #{'k1': '11111', 'k2': 'v2', 'k3': 123}
另一種寫法:

dic = { "k1":'v1', "k2":'v2' } dic.update(k1=123,k3=333,k5="sdfsdf") print(dic) #{'k1': 123, 'k2': 'v2', 'k3': 333, 'k5': 'sdfsdf'}
* dict類最常用的幾個功能和方法
.keys()
.values()
.items()
get
update