python 詞典
在dictionary中,每個(gè)鍵都用冒號(hào)(:)分隔,它們之間用逗號(hào)隔開,整個(gè)事物用大括號(hào)括起來。沒有任何項(xiàng)目的空字典僅用兩個(gè)大括號(hào)編寫,如下所示:{}。
鍵在字典中是唯一的,而值可能不是。字典的值可以是任何類型,但鍵必須是不可變的數(shù)據(jù)類型,例如字符串,數(shù)字或元組。
在詞典中訪問值
要訪問字典元素,可以使用熟悉的方括號(hào)和密鑰來獲取它的值。以下是一個(gè)簡(jiǎn)單的例子 -
#!/usr/bin/python dict = {'name': 'zara', 'age': 7, 'class': 'first'} print "dict['name']: ", dict['name'] print "dict['age']: ", dict['age']
當(dāng)上面的代碼被執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果 -
dict['name']: zara dict['age']: 7
如果我們嘗試使用不屬于字典一部分的鍵訪問數(shù)據(jù)項(xiàng),我們會(huì)得到如下錯(cuò)誤 -
#!/usr/bin/python dict = {'name': 'zara', 'age': 7, 'class': 'first'} print "dict['alice']: ", dict['alice']
當(dāng)上面的代碼被執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果 -
dict['alice']: traceback (most recent call last): file "test.py", line 4, in <module> print "dict['alice']: ", dict['alice']; keyerror: 'alice'
更新詞典
您可以通過添加新條目或鍵值對(duì),修改現(xiàn)有條目或刪除現(xiàn)有條目來更新字典,如簡(jiǎn)單示例中所示 -
#!/usr/bin/python dict = {'name': 'zara', 'age': 7, 'class': 'first'} dict['age'] = 8; # update existing entry dict['school'] = "dps school"; # add new entry print "dict['age']: ", dict['age'] print "dict['school']: ", dict['school']
當(dāng)上面的代碼被執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果 -
dict['age']: 8 dict['school']: dps school
刪除字典元素
您可以刪除單個(gè)字典元素,也可以清除字典的全部?jī)?nèi)容。您也可以在一個(gè)操作中刪除整個(gè)字典。
要顯式刪除整個(gè)字典,只需使用 del 語句。以下是一個(gè)簡(jiǎn)單的例子 -
#!/usr/bin/python dict = {'name': 'zara', 'age': 7, 'class': 'first'} del dict['name']; # remove entry with key 'name' dict.clear(); # remove all entries in dict del dict ; # delete entire dictionary print "dict['age']: ", dict['age'] print "dict['school']: ", dict['school']
這會(huì)產(chǎn)生以下結(jié)果。請(qǐng)注意,由于 del 字典不再存在之后會(huì)引發(fā)異常-
dict['age']: traceback (most recent call last): file "test.py", line 8, in <module> print "dict['age']: ", dict['age']; typeerror: 'type' object is unsubscriptable
注 - del()方法在后面的章節(jié)中討論。
字典鍵的屬性
字典值沒有限制。它們可以是任何任意的python對(duì)象,無論是標(biāo)準(zhǔn)對(duì)象還是用戶定義的對(duì)象。但是,對(duì)于這些密鑰也是如此。
關(guān)于字典鍵有兩點(diǎn)要記住 -
(a) 每個(gè)密鑰不得超過一個(gè)條目。這意味著不允許重復(fù)密鑰。在分配過程中遇到重復(fù)鍵時(shí),最后一次分配會(huì)勝出。例如 -
#!/usr/bin/python dict = {'name': 'zara', 'age': 7, 'name': 'manni'} print "dict['name']: ", dict['name']
當(dāng)上面的代碼被執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果 -
dict['name']: manni
(b) 鑰匙必須是不可變的。這意味著您可以使用字符串,數(shù)字或元組作為字典鍵,但不允許使用['key']。以下是一個(gè)簡(jiǎn)單的例子 -
#!/usr/bin/python dict = {['name']: 'zara', 'age': 7} print "dict['name']: ", dict['name']
當(dāng)上面的代碼被執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果 -
traceback (most recent call last): file "test.py", line 3, in <module> dict = {['name']: 'zara', 'age': 7}; typeerror: list objects are unhashable