《python基礎教程》 --讀書筆記(3)

字典

列表這種數據結構適合將值組織到一個結構中,並通過編號對其進行引用。而字典通過名字來引用值的數據結構,也就是映射。

創建和使用字典

  1. dict函數
>>> items = [("name","liu"),("age","25")]
>>>> m = dict(items)
>>> m
{'name': 'liu', 'age': '25'}
  1. 基本字典操作
  • len(m) 返回m中項的數量
  • m[k] 返回關聯到鍵k上的值
  • m[k] = v 將值v關聯到鍵k上
  • del m[k] 刪除鍵爲k的值
  • k in m 檢查m中是否含有鍵爲k的項
  • 字典的鍵不一定爲整型數據,鍵可以是任意的不可變類型
  • 即使鍵起初在字典中不存在,也可以爲它賦值
  • 表達式k in m 查找的是鍵不是值
>>> m
{'name': 'liu', 'age': '25'}
>>> len(m)
2
>>> m["name"]
'liu'
>>> m["age"] = 22
>>> m
{'name': 'liu', 'age': 22}
>>> del m["age"]
>>> "age" in m
False
>>> "name" in m
True
>>>
>>> x = {}
>>>> x[12] = "test"
>>> x
{12: 'test'}
  1. 字典方法
  • clear
    clear方法清除字典中的所有的項
#第一種情況
>>> x = {}
>>> y = x
>>> x["key"] = "value"
>>> x = {}
>>> y
{'key': 'value'}
#第二種情況
>>> x = {}
>>> y = x
>>> x["v"] = "k"
>>> y
{'v': 'k'}
>>> x.clear()
>>> y
{}
  • copy
    copy方法返回一個具有相同鍵值對的新字典,(這個方法實現是淺複製
>>> x = {"name":"a1","test":[1,2,3]}
>>> y = x.copy()
>>> y["name"] = "a2"
>>> y["test"].remove(2)
>>> x
{'name': 'a1', 'test': [1, 3]}
>>> y
{'name': 'a2', 'test': [1, 3]}

深複製需要使用copy模塊的deepcopy函數來完成操作

>>> from copy import deepcopy
>>> d = {}
>>> d["name"] = ["d1","d2"]
>>> c = d.copy()
>>> dc = deepcopy(d)
>>> d["name"].append("d3")
>>> d
{'name': ['d1', 'd2', 'd3']}
>>> c
{'name': ['d1', 'd2', 'd3']}
>>> dc
{'name': ['d1', 'd2']}
  • fromkeys
    fromkey方法使用給定的鍵建立新的字典,每個鍵都對應一個默認的值None
>>> {}.fromkeys(["name","age"])
{'name': None, 'age': None}
  • get
    get方法訪問字典項,如果試圖訪問字典中不存在的鍵時,沒有任何異常,得到了None值,也可以自定義默認值
>>> d.get("name")
['d1', 'd2', 'd3']
>>> print(d.get("age"))
None
>>> print(d.get("age","NA"))
NA
  • item和iteritems
    item方法將字典所有項以列表的形式返回,列表中的每一項都表示爲鍵值對的形式
    iteritems方法的作用大致相同,但會返回一個迭代器對象而不是列表
  • keys和iterkeys
    key方法將字典中的鍵以列表形式返回,而iterkeys則返回針對鍵的迭代器
  • pop
    pop方法用來移除給定鍵的值,返回此值
>>> x
{'x1': '1', 'x2': '2', 'x3': '3'}
>>> x.pop("x2")
'2'
>>> x
{'x1': '1', 'x3': '3'}
  • popitem
    popitem方法類似於list.pop,後者會彈出列表的最後一個元素,但不同的時,popitem彈出隨機的項,因爲字典並沒有”最後的元素“
  • setdefault
    setdefault方法與get類似,都能獲取給定鍵的值。除此之外,setdefault還能在字典不含有給定鍵的情況下設定相應的鍵值。
>>> d = {}
>>> d.setdefault("name","NA")
'NA'
>>> d
{'name': 'NA'}
>>> d["name"] = "d1"
>>> d.setdefault("name")
'd1'
  • update
    update方法可以傳入一個字典項更新另外一個字典
>>> d = {"name":"d1","age":"22"}
>>> c = {"name":"c1"}
>>> d.update(c)
>>> d
{'name': 'c1', 'age': '22'}
  • values和itervalues
    values方法以列表的形式返回字典中的值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章