python核心編程筆記(6)- 字典,集合

chap 7 字典,集合


1. 映射類型,映射類型通常被稱做哈希表的原因是字典對象就是哈希類型的。哈希表的算法是獲取鍵,對鍵執行一個叫做哈希函數的操作,並根據計算的結果,選擇在數據結構的某個地址中來存儲你的值。任何一個值存儲的地址皆取決於它的鍵。正因爲這種隨意性,哈希表中的值是沒有順序的。


2. 創建: 直接創建或者通過工廠方法dict(),或者內建函數dict.fromkeys()
    注:dict.fromkeys(S[,v]) -> New dict with keys from S and values equal to v.v defaults to None.
   訪問: 迭代訪問key,使用字典鍵加上中括號得到該鍵的值(判斷字典是否包含這個key使用in或者not in還有has_key())
   更新: 添加新的item,刪除已經存在的item,修改一個item的value
   刪除:   del dict2['name']       刪除鍵爲“name”的條目
            dict2.clear()           刪除 dict2 中所有的條目
            del dict2               刪除整個 dict2 字典
            dict2.pop('name')       刪除並返回鍵爲“name”的條目
            
3. 操作符
   標準類型操作符
   映射類型操作符:通過鍵值查詢字典中的元素,也可以重新賦予新元素


4. 映射類型的內建函數和工廠函數
    標準類型函數[type()、str()和 cmp()] (cmp()是先比較字典長度,然後比較字典的鍵,再比較字典的值)
    映射類型相關的函數
    (1)dict()工廠函數:當容器類型對象做爲一個參數傳遞給方法 dict() 時很有意思。如果參數是可以迭代的,即,一個序列,或是一個迭代器,或是一個支持迭代的對象,那每個可迭代的元素必須成對出現。在每個值對中,第一個元素是字典的鍵、第二個元素是字典中的值。
    如果dict()的輸入參數是(另)一個映射對象,比如,一個字典對象,對其調用 dict()會從存在的字典裏複製內容來生成新的字典。新生成的字典是原來字典對象的淺複製版本, 它與用字典的內建方法copy() 生成的字典對象是一樣的。
    (2)len()它會返回所有元素(鍵-值對)的數目
    (3)hash()它可以判斷某個對象是否可以做一個字典的鍵,只有這個對象是可哈希的,纔可作爲字典的鍵。如果非可哈希類型作爲參數傳遞給 hash()方法,會產生 TypeError 錯誤


5. 映射類型的內建方法
    has_key(),in,not in,keys(),values(),items()
    dict.clear()            刪除字典中所有元素
    dict.copy()             返回字典(淺複製)的一個副本
    dict.fromkeys(seq,
    val=None)               創建並返回一個新字典,以 seq 中的元素做該字典的鍵,val 做該字典中所有鍵對應的初始值(如果不提供此值,則默認爲 None)
    dict.get(key,
default=None)               對字典 dict 中的鍵 key,返回它對應的值 value,如果字典中不存在此鍵,則返回 default 的值(注意,參數 default 的默認值爲 None)
    dict.has_key(key)       如果鍵(key)在字典中存在,返回 True,否則返回 False. 在 Python2.2版本引入 in 和 not in 後,此方法幾乎已廢棄不用了,但仍提供一個可工作的接口
    dict.items()            返回一個包含字典中(鍵, 值)對元組的列表
    dict.keys()             返回一個包含字典中鍵的列表
    dict.items()            返回一個包含字典中(鍵, 值)對元組的列表
    dict.iter()             方法 iteritems(), iterkeys(), itervalues()與它們對應的非迭代方法一樣,不同的是它們返回一個迭代子,而不是一個列表。
    dict.pop(key
[, default])                和方法 get()相似,如果字典中 key 鍵存在,刪除並返回 dict[key],
如果 key 鍵不存在,且沒有給出 default 的值,引發 KeyError 異常
    dict.setdefault(key,
    default=None)           和方法set()相似,如果字典中不存在key鍵,由dict[key]=default爲它賦值。
    dict.update(dict2)      將字典 dict2 的鍵-值對添加到字典 dict
    dict.values()           返回一個包含字典中所有值的列表
    
6. 集合類型:set(可變集合)frozenset(不可變集合)如你所想,對可變集合(set),你可以添加和刪除元素,對 不可變集合(frozenset)則不允許這樣做。可變集合(set)不是可哈希的,因此既不能用做字典的鍵也不能做其他集合中的元素。不可變集合(frozenset)則正好相反,即,他們有哈希值,能被用做字典的鍵或是作爲集合中的一個成員。


7. 集合運算符:
    in          是...的成員
    not in      不是...的成員
    ==          等於
    !=          不等於
    <           是...的嚴格子集
    <=          是...的子集(包含非嚴格子集)
    >           是...的嚴格超集
    >=          是...的超集(包括非嚴格超集)
    &           交集
    |           合集
    -           差補或相對補集
    ^           對稱差分
















    
       
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章