04-Python數(shù)據(jù)類型-字典基礎(chǔ)

一捂蕴、Python 字典(Dictionary)

字典是另一種可變?nèi)萜髂P托卧幔铱纱鎯?chǔ)任意類型對象竖幔。
字典的每個(gè)鍵值 key=>value 對用冒號(hào) : 分割切黔,每個(gè)鍵值對之間用逗號(hào) , 分割砸脊,整個(gè)字典包括在花括號(hào) {} 中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }
  • 鍵一般是唯一的,如果重復(fù)最后的一個(gè)鍵值對會(huì)替換前面的纬霞,值不需要唯一凌埂。
>>>dict = {'a': 1, 'b': 2, 'b': '3'};
>>> dict['b']
'3'
>>> dict
{'a': 1, 'b': '3'}
  • 值可以取任何數(shù)據(jù)類型,但鍵必須是不可變的诗芜,如字符串瞳抓,數(shù)字或元組。
    一個(gè)簡單的字典實(shí)例:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
  • 也可如此創(chuàng)建字典:
dict1 = { 'abc': 456 };
dict2 = { 'abc': 123, 98.6: 37 };

二伏恐、訪問字典里的值

  • 把相應(yīng)的鍵放入熟悉的方括弧孩哑,如下實(shí)例:
-實(shí)例
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
print "dict['Name']: ", dict['Name'];
print "dict['Age']: ", dict['Age'];

以上實(shí)例輸出結(jié)果:

dict['Name']:  Zara
dict['Age']:  7
  • 如果用字典里沒有的鍵訪問數(shù)據(jù),會(huì)輸出錯(cuò)誤如下:
-實(shí)例
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
print "dict['Alice']: ", dict['Alice'];

以上實(shí)例輸出結(jié)果:

dict['Alice']: 
Traceback (most recent call last):
  File "test.py", line 5, in <module>
    print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'

三翠桦、修改字典

向字典添加新內(nèi)容的方法是增加新的鍵/值對横蜒,修改或刪除已有鍵/值對如下實(shí)例:

實(shí)例
#!/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'];

以上實(shí)例輸出結(jié)果:

dict['Age']:  8
dict['School']:  DPS School

四、刪除字典元素

能刪單一的元素也能清空字典,清空只需一項(xiàng)操作丛晌。
顯示刪除一個(gè)字典用del命令鹰霍,如下實(shí)例:

實(shí)例
#!/usr/bin/python
# -*- coding: UTF-8 -*-
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
del dict['Name']; # 刪除鍵是'Name'的條目
dict.clear(); # 清空詞典所有條目
del dict ; # 刪除詞典
print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];

但這會(huì)引發(fā)一個(gè)異常,因?yàn)橛胐el后字典不再存在:

dict['Age']:
Traceback (most recent call last):
  File "test.py", line 8, in <module>
    print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable

五茵乱、字典鍵的特性

字典值可以沒有限制地取任何python對象,既可以是標(biāo)準(zhǔn)的對象孟岛,也可以是用戶定義的瓶竭,但鍵不行。
兩個(gè)重要的點(diǎn)需要記浊摺:

  • 不允許同一個(gè)鍵出現(xiàn)兩次斤贰。創(chuàng)建時(shí)如果同一個(gè)鍵被賦值兩次,后一個(gè)值會(huì)被記住次询,如下實(shí)例:
實(shí)例
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'};
print "dict['Name']: ", dict['Name'];

以上實(shí)例輸出結(jié)果:

dict['Name']:  Manni
  • 鍵必須不可變荧恍,所以可以用數(shù)字,字符串或元組充當(dāng)屯吊,所以用列表就不行送巡,如下實(shí)例:
實(shí)例
#!/usr/bin/python
dict = {['Name']: 'Zara', 'Age': 7};
print "dict['Name']: ", dict['Name'];

以上實(shí)例輸出結(jié)果:

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    dict = {['Name']: 'Zara', 'Age': 7};
TypeError: list objects are unhashable

六、字典內(nèi)置函數(shù)&方法

  • Python字典包含了以下內(nèi)置函數(shù):
    字典的內(nèi)置函數(shù)
  • Python字典包含了以下內(nèi)置方法:
    字典內(nèi)置方法

七盒卸、字典中某些函數(shù)的說明

  • copy函數(shù):返回一個(gè)具有相同鍵值的新字典
#1.5.2 copy函數(shù):返回一個(gè)具有相同鍵值的新字典
x={'one':1,'two':2,'three':3,'test':['a','b','c']}
print(u'初始x字典:',x)
print(u'X復(fù)制到Y(jié):')
y=x.copy()
print(u'y字典:',y)

y['three']=33       #修改Y中的值
print(u"修改之后的Y:",y)
print(u'修改之后的X:',x)

del y['one']
print(u"刪除之后的Y:",y)
print(u'刪除之后的X:',x)

'''
y['test'].remove('c')   #刪除Y中的一個(gè)數(shù)據(jù)
print(u"刪除之后的Y:",y)
print(u'刪除之后的X:',x)
'''

https://blog.csdn.net/u010480899/article/details/52737739
https://www.cnblogs.com/spidermansam/p/7637062.html

八骗爆、字典的其他操作:

info = {
    'stu1101':"TengLan Wu",
    'stu1102':"LongZe LuoLa",
    'stu1103':"XiaoZe MaLiya",
}
b = {
    'stu1101':"Alex Li",
    1:3,
    2:5,
    }

print(info.values()) #輸出字典中的值
print(info.keys()) #輸出字典中的key
info.setdefault("stu1101","abc") #如果key存在,不改變?nèi)魏沃当谓椋蝗绻鹝ey不存在摘投,則創(chuàng)建key并賦值
info.update(b) #合并字典,并且更新對應(yīng)的key的值
print(info)
c = dict.fromkeys([6,7,8]) #初始化一個(gè)字典
print(c)

九虹蓄、字典循環(huán)

info = {
    'stu1101':"TengLan Wu",
    'stu1102':"LongZe LuoLa",
    'stu1103':"XiaoZe MaLiya",
}

for i in info:  #推薦用此方法
    print(i,info[i])  
for k,v in info.items(): #不推薦使用犀呼,先要把字典轉(zhuǎn)成列表,如果數(shù)據(jù)量大薇组,效率大大降低
    print(k,v)

十外臂、練習(xí)1

  • 題目:給你一字典a,如a={1:1,2:2,3:3}体箕,輸出字典a的key专钉,以','鏈接,如‘1,2,3'
print(",".join([str(key) for key in a.keys()]))
或者:
print(",".join(map(str, a.keys())))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末累铅,一起剝皮案震驚了整個(gè)濱河市跃须,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌娃兽,老刑警劉巖菇民,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡第练,警方通過查閱死者的電腦和手機(jī)阔馋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來娇掏,“玉大人呕寝,你說我怎么就攤上這事∮の啵” “怎么了下梢?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長塞蹭。 經(jīng)常有香客問我孽江,道長,這世上最難降的妖魔是什么番电? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任岗屏,我火速辦了婚禮,結(jié)果婚禮上漱办,老公的妹妹穿的比我還像新娘这刷。我一直安慰自己,他們只是感情好娩井,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布崭歧。 她就那樣靜靜地躺著,像睡著了一般撞牢。 火紅的嫁衣襯著肌膚如雪率碾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天屋彪,我揣著相機(jī)與錄音所宰,去河邊找鬼。 笑死畜挥,一個(gè)胖子當(dāng)著我的面吹牛仔粥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蟹但,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼躯泰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了华糖?” 一聲冷哼從身側(cè)響起麦向,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎客叉,沒想到半個(gè)月后诵竭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體话告,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年卵慰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了沙郭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡裳朋,死狀恐怖病线,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鲤嫡,我是刑警寧澤氧苍,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站泛范,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏紊撕。R本人自食惡果不足惜罢荡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望对扶。 院中可真熱鬧区赵,春花似錦、人聲如沸浪南。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽络凿。三九已至骡送,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間絮记,已是汗流浹背摔踱。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怨愤,地道東北人派敷。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像撰洗,于是被迫代替她去往敵國和親篮愉。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

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

  • 〇差导、前言 本文共108張圖试躏,流量黨請慎重! 歷時(shí)1個(gè)半月设褐,我把自己學(xué)習(xí)Python基礎(chǔ)知識(shí)的框架詳細(xì)梳理了一遍冗酿。 ...
    Raxxie閱讀 18,959評(píng)論 17 410
  • 本節(jié)要介紹的是Python里面常用的幾種數(shù)據(jù)結(jié)構(gòu)襟沮。通常情況下,聲明一個(gè)變量只保存一個(gè)值是遠(yuǎn)遠(yuǎn)不夠的昌腰,我們需要將一組...
    小黑y99閱讀 65,195評(píng)論 0 9
  • 急診科醫(yī)生全是些五大三粗的壯漢开伏,護(hù)士也都是人高馬大的女漢子。除了我遭商。 我是個(gè)與這里格格不入的弱女子固灵。 是我死皮賴臉...
    劉莫繁閱讀 1,194評(píng)論 6 16
  • 人找人難,話找話更難劫流。 人這一生巫玻,都在尋找那個(gè)能過心的人。 人群中祠汇,我們滔滔不絕仍秤,我們歡聲笑語,我們有很多朋友可很,看...
    花雅雅閱讀 551評(píng)論 1 5
  • 常常在想我抠,如果90后老了會(huì)怎么樣苇本?會(huì)不會(huì)坐到游戲廳里打拳皇。會(huì)不會(huì)一起約到跳舞機(jī)上跳舞菜拓。會(huì)不會(huì)還會(huì)到網(wǎng)吧包宿圈澈。...
    齊方思閱讀 645評(píng)論 0 1