[Python]字典(內(nèi)置數(shù)據(jù)機構(gòu))

字典是有“鍵-值”對組成的集合,字典中的“值”通過“鍵”來引用【馗福“鍵-值”對之間用逗號隔開,并且被包含在一對花括號中铺厨。

字典的創(chuàng)建

格式

dictionary_name = {key1 : value1, key2 : value2, ...}  

創(chuàng)建空的字典

dictionary_name = {}  

例如

dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
print dict  

輸出

{'s': 'shanghai', 'b': 'beijing', 'g': 'guangzhou', 'w': 'wuhan'}

注意:字典將會按照每個元素的Hashcode值進行排序,而且硬纤,字典的“鍵”是區(qū)分大小寫的解滓。

字典的訪問

字典與元組或者列表不同,不是通過索引訪問的筝家,而是通過“鍵”值訪問value值的洼裤。

格式

value = dictionary_name[key]  

例如

#coding:UTF-8  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
print dict  
  
#訪問'shanghai'  
print dict['s']  

字典元素的添加和修改

在字典中,只需一條賦值語句就實現(xiàn)了字典元素的添加和修改溪王,所不同的是,若增加的元素在字典中不存在就是添加莹菱,若已經(jīng)存在就是修改缕减。

例如

#coding:UTF-8  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
print dict  
  
#添加{'c' : 'chongqing'}  
dict['c'] = 'chongqing'  
print dict  
  
#修改'wuhan'為'wuchang'  
dict['w'] = 'wuchang'  
print dict  

字典中的常用方法

方法名 說明
items() 返回(key,value)元組組成的列表
iteritems() 返回指向字典的遍歷器
setdefault(k[,d]) 創(chuàng)建新的元素并設(shè)置默認值
pop(k[,d]) 刪除索引k對應(yīng)的value值搅裙,并返回該值
get(k[,d]) 返回索引k對應(yīng)的value值
keys() 返回字典中 key 的列表
values() 返回字典中 value的列表
update(E) 把字典E中的數(shù)據(jù)擴展到原字典中
sorted() 排序
copy() 復(fù)制一個字典中所有的數(shù)據(jù)
  • items方法主要用于實現(xiàn)字典的遍歷操作皱卓,返回的是由若干元組組成的列表。
#coding:UTF-8  
#items()方法  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
print dict.items()  
輸出
[('s', 'shanghai'), ('b', 'beijing'), ('g', 'guangzhou'), ('w', 'wuhan')]
#coding:UTF-8  
#使用items()方法遍歷字典  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
for (k, v) in dict.items():  
    print 'dict[%s] = ' % k ,v   
輸出
dict[s] =  shanghai
dict[b] =  beijing
dict[g] =  guangzhou
dict[w] =  wuhan
  • iteritems方法主要是生成遍歷器部逮,用于實現(xiàn)字典的遍歷娜汁,除此之外還有iterkeys()方法和itervalues()方法。
coding:UTF-8  
#使用iteritems()方法遍歷字典  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
print dict.iteritems()#構(gòu)造遍歷器  
  
for k, v in dict.iteritems():  
    print 'dict[%s] = ' % k , v  
  • setdefault方法用于創(chuàng)建新的元素并設(shè)置默認值兄朋。
#coding:UTF-8  
#設(shè)置默認值  
dict = {}#空的字典  
  
dict.setdefault('b')#{'b': None}  
print dict  
  
dict['b'] = 'beijing'  
#已經(jīng)設(shè)置了'b'對應(yīng)的值掐禁,再設(shè)置默認將無效  
dict.setdefault('b', 'default')  
print dict  
  • pop方法用于刪除指定的key處的值。
#coding:UTF-8  
#刪除操作  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
#刪除key值為's'處的值  
dict.pop('s')  
  
print dict  
#coding:UTF-8  
#刪除操作還有使用內(nèi)建的方法del()  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
#使用del方法  
del(dict['s'])  
  
print dict  
#coding:UTF-8  
#字典的清空使用clear()方法  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
#清空  
dict.clear()  
  
print dict #空的字典  
  • get方法用于得到key鍵處的值颅和。
#coding:UTF-8  
#get()方法  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
print dict.get('s')#shanghai  
  • keys方法用于返回字典中的key的列表傅事。
#coding:UTF-8  
#keys()方法  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
print dict.keys()#['s', 'b', 'g', 'w']  
  • values方法用于返回字典中的value的列表。
#coding:UTF-8  
#values()方法  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
print dict.values()#['shanghai', 'beijing', 'guangzhou', 'wuhan']  
  • update函數(shù)主要實現(xiàn)的是將一個字典中的元素增加到另一個字典中峡扩。
#coding:UTF-8  
#update()方法  
dict_1 = {'b' : 'beijing', 's' : 'shanghai'}  
  
dict_2 = {'w' : 'wuhan', 'g' : 'guangzhou'}  
  
dict_1.update(dict_2)  
print dict_1  

注意蹭越,若出現(xiàn)dict_2中有dict_1中的鍵,則會更新教届。

  • sorted排序函數(shù)响鹃。
#coding:UTF-8  
#sorted()方法  
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
#按照key排序  
print sorted(dict.items(), key = lambda d: d[0])  
  
#按照value排序  
print sorted(dict.items(), key = lambda d: d[1])  
  • copy函數(shù)實現(xiàn)的是字典的淺拷貝驾霜。
#coding:UTF-8  
#copy()方法  
dict_1 = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}  
  
dict_2 = {'c' : 'chongqing'}  
  
dict_2 = dict_1.copy()  
print dict_2#{'s': 'shanghai', 'b': 'beijing', 'w': 'wuhan', 'g': 'guangzhou'}  

注意:清除了dict_2中原有的元素。淺拷貝是指只拷貝數(shù)據(jù)不拷貝數(shù)據(jù)之間的關(guān)系买置,新的數(shù)據(jù)和舊的數(shù)據(jù)使用的是同一塊內(nèi)存空間粪糙;對應(yīng)的是深拷貝,既拷貝數(shù)據(jù)忿项,也拷貝數(shù)據(jù)之間的關(guān)系蓉冈,新的數(shù)據(jù)和舊的數(shù)據(jù)使用的是不同的內(nèi)存空間。在python中可以使用copy模塊來實現(xiàn)對象的深拷貝和淺拷貝倦卖,其中的deepcopy()用于深拷貝操作洒擦,copy()用于淺拷貝操作。

#coding:UTF-8  
#copy模塊  
import copy  
  
dict_1 = {'a' : 'beijing', 'b' : {'s' : 'shanghai', 'w' : 'wuhan'}}  
  
dict_2 = copy.deepcopy(dict_1)#深拷貝  
dict_3 = copy.copy(dict_1)#淺拷貝  
  
dict_2['b']['s'] = 'shenyang'  
print dict_1#{'a': 'beijing', 'b': {'s': 'shanghai', 'w': 'wuhan'}}  
dict_3['b']['s'] = 'shenyang'  
print dict_1#{'a': 'beijing', 'b': {'s': 'shenyang', 'w': 'wuhan'}}  
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末怕膛,一起剝皮案震驚了整個濱河市熟嫩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌褐捻,老刑警劉巖掸茅,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異柠逞,居然都是意外死亡昧狮,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門板壮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逗鸣,“玉大人,你說我怎么就攤上這事绰精∪鲨担” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵笨使,是天一觀的道長卿樱。 經(jīng)常有香客問我,道長硫椰,這世上最難降的妖魔是什么繁调? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮靶草,結(jié)果婚禮上蹄胰,老公的妹妹穿的比我還像新娘。我一直安慰自己奕翔,他們只是感情好烤送,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著糠悯,像睡著了一般帮坚。 火紅的嫁衣襯著肌膚如雪妻往。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天试和,我揣著相機與錄音讯泣,去河邊找鬼。 笑死阅悍,一個胖子當著我的面吹牛好渠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播节视,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拳锚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了寻行?” 一聲冷哼從身側(cè)響起霍掺,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拌蜘,沒想到半個月后杆烁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡简卧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年兔魂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片举娩。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡析校,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出铜涉,到底是詐尸還是另有隱情智玻,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布骄噪,位于F島的核電站,受9級特大地震影響蠢箩,放射性物質(zhì)發(fā)生泄漏链蕊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一谬泌、第九天 我趴在偏房一處隱蔽的房頂上張望滔韵。 院中可真熱鬧,春花似錦掌实、人聲如沸陪蜻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宴卖。三九已至滋将,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間症昏,已是汗流浹背随闽。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留肝谭,地道東北人掘宪。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像攘烛,于是被迫代替她去往敵國和親魏滚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容