python資料型別-元祖和字典型別、hash函式
阿新 • • 發佈:2019-02-18
一、元組的定義和特性
定義:與列表類似,只不過[]改成()
特性:
1.可存放多個值
2.不可變
3.按照從左到右的順序定義元組元素,下標從0開始順序訪問,有序
解釋為什麼要有不可變資料型別元組出現?
元組的建立與常用操作
建立
ages = (11, 22, 33, 44, 55)
#或
ages = tuple((11, 22, 33, 44, 55))
常用操作
#索引
>>> ages = (11, 22, 33, 44, 55)
>>> ages[0]
11
>>> ages[3]
44
>>> ages[-1]
55
#切片:同list
#迴圈
>>> for age in ages:
print(age)
11
22
33
44
55
#長度
>>> len(ages)
5
#包含
>>> 11 in ages
True
>>> 66 in ages
False
>>> 11 not in ages
False
元組的特性詳解
1.可存放多個值
如果元組中只有一個值
t = (1,)
t = (1) #<==>t = 1
元組中不僅可以存放數字、字串,還可以存放更加複雜的資料型別
2.不可變
元組本身不可變,如果元組中還包含其他可變元素,這些可變元素可以改變
二、hash函式
可以被hash的內容
剛剛我們已經說過,hash值的計算過程是依據這個值的一些特徵計算的,這就要求被hash的值必須固定。
+可以想見如果“王老五”變成“王老六”了,計算的結果就會發生改變。
因此我們要說,壞訊息是可變的資料型別是不可以被hash的,好訊息是如果一個值可以hash那麼說明這是一個不可變得資料型別。
不會用hash沒有關係,這裡你先知道什麼是hash,接下來,我們要學習一種很厲害的資料型別,它就是用這種方式,讓我們能夠從大量資料中直接快速找到我們想要的資料。
三、資料型別-字典
字典是Python語言中唯一的對映型別。
定義:{key1:value1,key2:value2}
1、鍵與值用冒號“:”分開; 2、項與項用逗號“,”分開;
建立:
方便查詢:
a.sort排序:
增加:
修改:
查詢:
刪除:
pop:刪除 (刪除最後一個,並返回) popitem隨機刪
python 中range() 函式可建立一個整數列表,一般用在 for 迴圈中。
多級字典巢狀:
修改:
info.:
info.update(dic2):表示dic2裡有對應info裡的值就覆蓋,沒有對應info裡的值就建立
info.setdefault(k,new k)中k如果存在,對info 沒影響。k如果不存在,對info進行增加
for迴圈:
字典的常見操作
鍵、值、鍵值對
1、dic.keys() 返回一個包含字典所有KEY的列表;
2、dic.values() 返回一個包含字典所有value的列表;
3、dic.items() 返回一個包含所有(鍵,值)元祖的列表;
4、dic.iteritems()、dic.iterkeys()、dic.itervalues() 與它們對應的非迭代方法一樣,不同的是它們返回一個迭代子,而不是一個列表;
新增
1、dic['new_key'] = 'new_value';
2、dic.setdefault(key, None) ,如果字典中不存在Key鍵,由 dic[key] = default 為它賦值;_
刪除
1、dic.pop(key[,default]) 和get方法相似。如果字典中存在key,刪除並返回key對應的vuale;如果key不存在,且沒有給出default的值,則引發keyerror異常;
2、dic.clear() 刪除字典中的所有項或元素;
修改
1、dic['key'] = 'new_value',如果key在字典中存在,'new_value'將會替代原來的value值;
2、dic.update(dic2) 將字典dic2的鍵值對新增到字典dic中
檢視
1、dic['key'],返回字典中key對應的值,若key不存在字典中,則報錯;
2、dict.get(key, default = None) 返回字典中key對應的值,若key不存在字典中,則返回default的值(default預設為None)
迴圈
1、for k in dic.keys()
2、for k,v in dic.items()
3、for k in dic
長度
1、len(dic)