字典的用途
- 表示棋盤的狀態,其中每個鍵都是由座標組成的元組
- 存儲文件修改時間,其中鍵爲文件名
- 數字電話/地址簿
字典的創建和使用
字典由鍵和相應的值組成,這種鍵值對稱爲項;鍵和值之間用:隔開;項與項之間用,隔開,空字典用花括號表示{}
在字典中鍵必須是獨一無二的,但是值不用
函數dict
可使用函數dict從其他映射(如其他字典)或鍵值對序列創建字典
或者使用關鍵字實參來調用
基本的字典操作
- len(d)返回d包含的項(鍵值對)數
- d[k]返回與鍵k相關聯的值
- d[k] = v 將值v關聯到鍵k
- del d[k]刪除鍵爲k的項
- k in d 檢查字典d是否包含鍵爲k的項
字典跟列表的區別
鍵的類型:字典中鍵可以是整數,但並非必須是整數;字典中的鍵可以試任何不可變的類型:浮點數、字符串、元組
自動添加: 字典中原本沒有鍵,也可以給它賦值,會在字典中創建一個新項;但是如果不使用append等方法的話就不能給列表中的元素賦值
成員資格:表達式k in d(d是字典)查找的是鍵不是值 v in l(l是列表)查找的是列表中的值而不是索引
將字符串格式設置功能用於字典
即在字典中包含的各種信息,只需要在格式字符串中提取所需的信息即可
字典方法
clear: 刪除所有字典項,返回None
copy:複製,返回一個新字典,其中包含的鍵值對跟原來的字典相同(這個方法是淺複製,操作的是原件,而非副本)
替換副本中的值,原件不受影響,修改副本中的值(就地址修改),原件也發生變化,這個時候我們需要深複製----deepcopy,即無論怎樣操作原件,都不影響複製出來的副本
fromkeys:創建一個新字典,其中包含指定的鍵,且每個鍵對應的都是None,如果不想使用默認值,也可以使用特定的值
get:獲取指定鍵的值。get爲訪問字典項提供了寬鬆的環境;因爲通常情況下若是沒有這個鍵則會報錯,但是get不會報錯,只返回None
items:返回一個包含所有字典項的列表,字典項在列表中的順序不確定
這種返回值類型叫做字典視圖,可用於迭代,還可以確定其長度以及對齊執行成員資格檢查
字典視圖的有點是不復制,是底層字典的反應,會隨着字典的改變而改變
keys:返回一個字典視圖,其中包含指定字典中的鍵
pop:用於獲取與指定鍵相關聯的鍵,並將改鍵值對從字典中刪除
popitem:類似於list.pop,但是popitem隨機彈出一個字典項
setdefault:獲取與指定鍵相關聯的值,在字典不包含改鍵時,在地點中添加指定的鍵值對
值是可選的(第二個參數,沒有的話默認爲None)
update:使用一個字典中的項來更新另一個字典;如果當前字典中包含相同的鍵就替換鍵對應的值,若不包含就新增
values:返回一個有字典中的 值 組成的字典視圖,values返回的視圖可能包含着重複的值