字典和集合(一)

一. 初識字典

        字典一種可變的容器,可以存儲任意類型的數據,數據以鍵(key)-值(value)對的形式進行映射存儲。字典中的每個數據都是用“鍵”(key)進行索引的,而不像序列可以用下標進行索引,因此鍵不能重複,且只能用不可變類型作爲字典的鍵。數據沒有先後順序關係,字典的存儲是無序的。

1.1 表示方式  

        {} 括起來,以冒號(:)分隔鍵-值對,各個鍵-值用逗號分隔開

1.2 創建字典

  • 創建空字典:d = {}
  • 創建非空字典:d = {"name":"Alex","age":12}、d = {1:"星期一",2:"星期二"} 
  • 字典的構造函數:
dict() 創建空字典,等同於{}
dict(iterable) 用可迭代對象初始化一個字典。如:d = dict([('name', 'Alex'), ('age', 13)]),每個元組裏面提供2個值,一個爲鍵,一個爲值。
dict(**kwargs) 關鍵字傳參形式生成一個字典。如:d = dict(name='Alex',age=15),此方法中,鍵必須只能是字符串

1.3 添加/修改字典的元素

        使用“字典[鍵] = 值”的形式向字典中添加/修改元素;當鍵不存在時,創建鍵並綁定鍵對應的值,當鍵存在時,修改鍵綁定的對象。

1.4 刪除字典的元素

        del語句用來刪除字典的元素:del dict[key]

1.5 in/not in運算符

        判斷一個“鍵”是否存在與字典中,如果存在則返回True,否則返回False

1.6 字典的迭代訪問

        字典是可迭代對象,直接遍歷字典時得到的是字典的鍵。可以使用索引間接訪問值(遍歷時切勿去同時修改字典的值,後續篇幅會詳細說明)。

二. 字典常用函數及方法

關於字典相關函數的使用總結如下

函數 說明
len(x) 返回鍵值對的個數
max(x) 返回‘’鍵‘’的最大值
min(x) 返回‘’鍵‘’的最小值
sum(x) 返回‘’鍵‘’的和
any(x)  真值測試,如果字典中一個‘’鍵‘’爲真,則結果爲真
all(x) 真值測試,字典中所有‘’鍵‘’爲真,則結果才爲真

關於字典相關方法的使用總結如下

方法 說明
D.clear() 清空字典
D.copy() 返回字典D的副本,只複製一層(淺拷貝)
D.get(k[,d]) 返回鍵key對應的值,如果沒有此鍵,則返回default
D.items()

返回鍵值對組成的可迭代對象;

如:d = {1:"one", 2:"two","three":3},d.items()返回值爲dict_items([(1, 'one'), (2, 'two'), ('three', 3)])

D.keys()

返回字典的鍵;

d = {1:"one", 2:"two","three":3},d.keys()返回值爲dict_keys([1, 2, 'three'])

D.values()

返回字典的值;

d = {1:"one", 2:"two","three":3},d.values()返回值爲dict_values(['one', 'two', 3])

D.pop(k[d]) 移除鍵,同時返回此鍵對應的值;
D.update(D2) 更新字典;如果key值重複,則更新爲D2中的值

三. 字典和列表的比較

  1. 都是可變對象;
  2. 索引方式不同,列表用整數索引,字典用鍵索引;
  3. 列表的存儲是有序的,字典的存儲是無序的:
  4. 列表:順序存儲,append()很快,但insert()很慢;
  5. 字典:映射存儲,插入的速度很快。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章