1. 程式人生 > >python資料型別-元祖和字典型別、hash函式

python資料型別-元祖和字典型別、hash函式

一、元組的定義和特性

定義:與列表類似,只不過[]改成()

特性:

  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)
迴圈
    1for k in dic.keys()
    2for k,v in dic.items()
    3for k in dic
長度
    1、len(dic)