Python基礎 之 tuple類-元組 和 dict類-字典


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
for item in tu:

 

元組成為被迭代對象,添加進 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')
tuple()

 

把 list 列表轉換成 tuple 元組

li = ["even",123]
v = tuple(li)
print(v)
#('even', 123)
tuple()

 

把 tuple 元組轉換成 list 列表

tu = (123,123,"root")
v = list(tu)
print(v)
#[123, 123, 'root']
list()

 

元組轉換成字符串(既有數字又有字符串的情況)
需要自己寫 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
count()

 

2.index

找到某個值的索引位置(類似list類中的意義)

tu = (111,"root",(11,22),[(33,44)],True,22,33,44,)
n = tu.index(22)
print(n)
#5
index()

 

三、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)}
View Code

 

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
dict 索引

 

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)}
dict 的刪除

 

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:

 

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.keys():

 

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.values():

 

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)
輸出key 和 value

 

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)
for k,v in info.items():

 

二、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}
dict.fromkeys()

 

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
get()

 

3.pop

刪除,並得到被刪除的值

dic = {
    "k1":'v1',
    "k2":'v2'
}
v = dic.pop('k1')

print(v)    #輸出被刪除的值
print(dic)    #輸出刪除操作之后的dic

#v1
#{'k2': 'v2'}
pop()

 

4.popitem

隨機刪除鍵值對,並得到被刪除的鍵值對

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

 

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
setdefault()

 

6.update

已經存在的,進行覆蓋新值;不存在的,進行更新

dic = {
    "k1":'v1',
    "k2":'v2'
}

dic.update({'k1':'11111','k3':123})
print(dic)

#{'k1': '11111', 'k2': 'v2', 'k3': 123}
update()

另一種寫法:

dic = {
    "k1":'v1',
    "k2":'v2'
}

dic.update(k1=123,k3=333,k5="sdfsdf")
print(dic)
#{'k1': 123, 'k2': 'v2', 'k3': 333, 'k5': 'sdfsdf'}
update()

 

* dict類最常用的幾個功能和方法

.keys()
.values()
.items()
get
update

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM