字典是另一種可變容器模型,且可存儲任意類型對象。
字典的每個鍵值(key=>value)對用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括號({})中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
鍵必須是唯一的,但值則不必。
值可以取任何數據類型,但鍵必須是不可變的,如字符串,數字或元組。
1、字典的定義
dict1 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} dict2 = {'abc': 456}; dict3 = {'abc': 123, 10: 20}; dict4 = {} #定義空字典 dict5 = dict() #定義空字典
2、字典的訪問
字典的索引就是字典的鍵值
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}; print "dict['Name']: ", dict['Name']; print "dict['Age']: ", dict['Age']; #運行結果 dict['Name']: Zara dict['Age']: 7
3、修改字典條目
鍵值存在則更改原Value值,鍵值不存在則增加新的鍵值對
dict = {"one": 1, "two": 2, "three": 3, }; dict['one'] = 100; # 如存在,則更新存在的條目 dict['four'] = 4; # 如不存在則添加新條目 print "dict['one']: ", dict['one']; print "dict['four']: ", dict['four']; print dict #運行結果 dict['one']: 100 dict['four']: 4 {'four': 4, 'three': 3, 'two': 2, 'one': 100}
4、刪除字典
刪除包括:刪除單個元素、刪除所有元素、刪除整個字典
dict = {"one": 1, "two": 2, "three": 3,}; del dict['one']; # 刪除鍵是'Name'的條目 print dict dict.clear(); # 清空詞典所有條目 print dict del dict; # 刪除詞典 # print dict #此句會報TypeErro錯,應為字典已經不存在了 #運行結果 {'three': 3, 'two': 2} {}
5、字典的常用方法
1、 dict.clear() #刪除字典內所有元素

dict = {'Name': 'yang', "age": 20} print dict dict.clear() print dict #running result {'age': 20, 'Name': 'yang'} {}
2、 dict.copy() #返回一個字典的淺復制
3、 dict.fromkeys(seq[, val]) #創建一個新字典,以序列 seq 中元素做字典的鍵,val 為字典所有鍵對應的初始值

seq = ('name', 'age', 'sex') dict = dict.fromkeys(seq) print "New Dictionary : %s" % str(dict) dict = dict.fromkeys(seq, 10) print "New Dictionary : %s" % str(dict) #運行結果 New Dictionary : {'age': None, 'name': None, 'sex': None} New Dictionary : {'age': 10, 'name': 10, 'sex': 10}
4、 dict.get(key, default=None) #返回指定鍵的值,如果值不在字典中返回default值

dict = {'Name': 'yang', 'Age': 27} print "Value : %s" % dict.get('Age') # 有則返回Value值 print "Value : %s" % dict.get('Sex', "Never") # 沒有則返回給定的Value值 print "Value : %s" % dict.get('Sex') # 沒有給定Value 返回NONE #運行結果 Value : 27 Value : Never Value : None
5、 dict.has_key(key) #如果鍵在字典dict里返回true,否則返回false

dict = {'Name': 'yang', 'Age': 27} print "Value : %s" % dict.has_key('Age') print "Value : %s" % dict.has_key('Sex') #運行結果 Value : True Value : False
6、 dict.items() #以列表返回可遍歷的(鍵, 值) 元組數組
dict.iteritems(self) #生成一個包含所有鍵值對的可迭代對象
dict.viewitems(self) # 功能和iteritems類似,但是能體現出變化的值

dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'} print "字典值 : %s" % dict.items() # 遍歷字典列表 for key, values in dict.items(): print key, values # 遍歷可迭代的對象 iteritems實現 for key, values in dict.iteritems(): print key, values # 遍歷可迭代的對象 viewitems實現 for key, values in dict.viewitems(): print key, values #運行結果 字典值 : [('aaa', 'www.aaa.com'), ('bbb', 'www.bbb.com'), ('ccc', 'www.ccc.com')] aaa www.aaa.com bbb www.bbb.com ccc www.ccc.com aaa www.aaa.com bbb www.bbb.com ccc www.ccc.com aaa www.aaa.com bbb www.bbb.com ccc www.ccc.com
7、 dict.keys() #以列表返回一個字典所有的鍵
dict.iterkeys(self) #返回一個包含所有鍵的可迭代對象
dict.viewkeys(self) # 功能和iterkeys類似,但是能體現出變化的值

dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'} print "鍵 : %s" % dict.keys() # 遍歷字典列表 for key in dict.keys(): print ("dict.keys(): %s" % key) # 遍歷可迭代的對象 iteritems實現 for key in dict.iterkeys(): print ("dict.iterkeys(): %s" % key) # 遍歷可迭代的對象 viewitems實現 for key in dict.viewkeys(): print ("dict.viewkeys(): %s" % key) #運行結果 鍵 : ['aaa', 'bbb', 'ccc'] dict.keys(): aaa dict.keys(): bbb dict.keys(): ccc dict.iterkeys(): aaa dict.iterkeys(): bbb dict.iterkeys(): ccc dict.viewkeys(): aaa dict.viewkeys(): bbb dict.viewkeys(): ccc
8、 dict.values() #以列表返回字典中的所有值
dict.itervalues(self) 返回一個包含所有Value的可迭代對象
dict.viewvalues(self) # 功能和itervalues類似,但是能體現出變化的值

dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'} print "Value值 : %s" % dict.values() # 遍歷字典列表 for value in dict.values(): print ("dict.values(): %s" % value) # 遍歷可迭代的對象 iteritems實現 for value in dict.itervalues(): print ("dict.itervalues(): %s" % value) # 遍歷可迭代的對象 viewitems實現 for value in dict.viewvalues(): print ("dict.viewvalues(): %s" % value) #運行結果 Value值 : ['www.aaa.com', 'www.bbb.com', 'www.ccc.com'] dict.values(): www.aaa.com dict.values(): www.bbb.com dict.values(): www.ccc.com dict.itervalues(): www.aaa.com dict.itervalues(): www.bbb.com dict.itervalues(): www.ccc.com dict.viewvalues(): www.aaa.com dict.viewvalues(): www.bbb.com dict.viewvalues(): www.ccc.com
9、 dict.setdefault(key, default=None) #和get()類似, 但如果鍵不存在於字典中,將會添加鍵並將值設為default

#!/usr/bin/env python # -*- coding:utf-8 -*- dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'} a = dict.setdefault("aaa") # 有該鍵則返回Value值 b = dict.setdefault("ddd","www.ddd.com") #沒有該鍵 則在字典中添加,並返回給定的值 print a, b print dict #運行結果 www.aaa.com www.ddd.com {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com', 'ddd': 'www.ddd.com'}
10、dict.update(dict2) #把字典dict2的鍵/值對更新到dict里

dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'} dict2 = {100:100} dict.update({"ddd":"www.ddd.com"}) print dict dict.update(dict2) print dict #運行結果 {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com', 'ddd': 'www.ddd.com'} {100: 100, 'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com', 'ddd': 'www.ddd.com'}
11、dict.pop(key[,default]) #刪除字典給定鍵 key 所對應的值,返回值為被刪除的值。key值必須給出。 否則,返回default值。

#!/usr/bin/env python # -*- coding:utf-8 -*- dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'} print dict.pop("aaa") # 如果鍵存在,則在字典中刪除對應鍵值對,並返回Value值 print dict.pop("ddd", "www.ddd.com") #如果鍵不存在,則返回給定的默認Value值 print dict # 運行結果 www.aaa.com www.ddd.com {'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'}
12、dict.popitem() 隨機返回並刪除字典中的一對鍵和值。

#!/usr/bin/env python # -*- coding:utf-8 -*- dict = {'aaa': 'www.aaa.com', 'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'} a = dict.popitem() print a # 隨機刪除的鍵值對 print dict # 打印隨機刪除一個鍵值對后的字典 #運行結果 ('aaa', 'www.aaa.com') {'bbb': 'www.bbb.com', 'ccc': 'www.ccc.com'}
6.字典的內置函數
1、 cmp(dict1, dict2) #比較兩個字典元素。
2、 len(dict) #計算字典元素個數,即鍵的總數。
3、 str(dict) #輸出字典可打印的字符串表示。
4、 type(variable) #返回輸入的變量類型,如果變量是字典就返回字典類型。