字典是python中唯一內建的對映型別。字典中的值並沒有特殊的順序,但是都儲存在乙個特定的鍵(key)裡。鍵可以是數字、字串甚至是元組。
一、建立和使用字典
字典可以通過下面的方式建立:
>>> phonebook =
字典由多個鍵及與其對應的值構成的對組成。每個鍵和它的值之間用冒號(:)隔開,項之間用逗號(,)隔開,而整個字典是由一對大括號括起來。字典中的鍵是唯一的,而值並不唯一。
1. dict 函式
用 dict 函式,通過其他對映(比如其他字典)或者(鍵,值)這樣的序列對建立字典。
>>> items = [('name', 'gumby'), ('age', 42)]
>>> d = dict(items)
>>> d
dict 函式也可以通過關鍵字引數來建立字典。
>>> d = dict(name='gumby', age=42)
>>> d
2. 基本字典操作
字典的基本行為在很多方面與序列類似:
(1)len(d) 返回 d 中項(鍵-值對)的數量
(2)d[k] 返回關聯到鍵 k 上的值
(3)d[k] = v 將值 v 關聯到鍵 k 上
(4)del d[k] 刪除鍵為 k 的項
(5)k in d 檢查 d 中是否有含有鍵為 k 的項
儘管字典和列表有很多特性相同,但也有下面一些重要的區別。
(1)鍵型別:字典的鍵不一定為整型資料(但也可能是),也可能是其他不可變型別,比如浮點型(實型)、字串或者元組。
(2)自動新增:即使那個鍵起初在字典中並不存在,也可以為它分配乙個值,這樣字典就會建立新的項。
(3)成員資格:表示式 k in d (d 為字典) 查詢的是鍵,而不是值。
3. 字典的格式化字串
在每個轉換(conversion specifier)中的 % 字元後面,可以加上用圓括號括起來的鍵,後面再跟上其他說明元素。
>>> phonebook
>>> "cecil's phone number is %(cecil)s." % phonebook
"cecil's phone number is 3258."
只要所有給出的鍵都能在字典中找到,就可以獲得任意數量的轉換說明符。
>>> template = '''''...... ...
... %(text)s
... '''
>>> data =
>>> print(template % data)
welcome to my home page!
4. 字典方法
(1) clear
clear 方法清除字典中所有的項。這是個原地操作,所以無返回值(或者說返回 none)。
>>> d
>>> retured_value = d.clear()
>>> d
{}
>>> retured_value
>>> print(retured_value)
none
(2) copy
copy 方法返回乙個具有相同鍵-值對的新字典(這個方法實現的是淺複製(shallow copy),因為值本身就是相同的,而不是副本)。
>>> x =
>>> y = x.copy()
>>> y['username'] = 'mlh'
>>> y['machines'].remove('bar')
>>> y
>>> x
上面,當在 y 中替換值的時候,x 不受影響,但是,如果修改了某個值(原地修改,而不是替換),x 也會改變,因為同樣的值也儲存在原字典中。
避免這個問題的一種方法就是使用深複製( deep copy),複製其包含所有的值。可以使用 copy 模組的 deepcopy 函式來完成操作。
(3)fromkeys
fromkeys 方法使用給定的鍵建立新的字典,每個鍵預設對應的值為 none。
>>> {}.fromkeys(['name', 'age'])
也可以直接在所有字典的型別 dict 上面呼叫方法。
>>> dict.fromkeys(['name', 'age'])
如果不想使用none作為預設值,也可以自己提供預設值。
>>> dict.fromkeys(['name', 'age'], '(unknown)')
(4)get
當使用 get 訪問乙個不存在的鍵時,沒有任何異常,而得到了 none 值。
>>> print(d['name'])
traceback (most recent call last):
file "", line 1, in keyerror: 'name'
>>> print(d.get('name'))
none
還可以定義「預設」值,替換 none:
>>> d.get('name', 'n/a')
'n/a'
如果鍵存在,get用起來就像普通的字典查詢一樣。
(5)items
items 方法將所有的字典項以dict_items 方式返回,這些列表項中的每一項都來自於(鍵,值)。
>>> d =
>>> d
>>> d.items()
dict_items([('url', ''), ('title', 'python web site'), ('spam', 0)])
(6)keys
keys 方法將字典中的鍵以 dict_keys 形式返回。
(7)pop
pop 方法用來獲得對應於給定鍵的值,然後將這個鍵-值對從字典中移除。
>>> d =
>>> d.pop('x')
1 >>> d
(8)popitem
popitem 彈出隨機的項。
>>> d
>>> d.popitem()
('url', '')
>>> d
(9)setdefault
setdefault 方法在某種程度上類似於 get 方法,就是能夠獲得與給定鍵相關聯的值,除此之外,setdefault 還能在字典中不含有給定鍵的情況下設定相應的鍵值。
>>> d = {}
>>> d.setdefault('name', 'n/a')
'n/a'
>>> d
>>> d['name'] = 'gumby'
>>> d.setdefault('name', 'n/a')
'gumby'
>>> d
當鍵不存在的時候,setdefault 返回預設值並且相應地更新字典。如果鍵存在,那麼就返回與其相應的值,但不改變字典。
(10)update
update 方法可以利用乙個字典項更新另乙個字典。
>>> d =
>>> x =
>>> d.update(x)
>>> d
提供的字典中的項會被新增到舊的字典中,若有相同的鍵則會進行覆蓋。
(11)values
values 方法以 dict_values 的形式返回字典中的值。
>>> d = {}
>>> d[1] = 1
>>> d[2] = 2
>>> d[3] = 3
>>> d[4] = 4
>>> d.values()
dict_values([1, 2, 3, 4])
python學習1 字典
1.基本概念 常見的建立詞典的方法 dic print type dic 詞典和列表類似的地方,是包含有多個元素,每個元素以逗號分隔。但詞典的元素包含有兩部分,鍵和值,常見的是以字串來表示鍵,也可以使用數字或者真值來表示鍵 不可變的物件可以作為鍵 值可以是任意物件。鍵和值兩者一一對應。實際上,列表的...
python3字典遍歷 python3字典遍歷
python版本 python3.7 info infog.get name 得到字典info中name的值 info.keys 得到字典info中所有的鍵,結果是乙個物件 dict keys name age 需要注意在python2中該操作得到的是乙個列表 遍歷key for temp in i...
python學習筆記(五) 字典(1)
上集回顧 python學習筆記 四 if語句 python學習筆記 三 列表 2 python學習筆記 二 列表 1 python學習筆記 一 hello world 變數 字串 數字 禪 student print student age print student name 字典是一系列鍵 值對...