python基礎(chǔ)【五段誊、字典(dict)】

@[toc]

1.字典介紹

  • 每個字典元素都有鍵(key)和值(value)兩個屬性
  • key用于定義和標(biāo)識字典元素闰蚕,value是字典元素對應(yīng)的值
  • value可以是任意值;字典连舍、列表不能作為字典的key
  • 字典是用鍵-值(key-value)存儲没陡,具有極快的查找速度
  • 字典是無序的

list比較,dict有以下幾個特點(diǎn):

  1. 查找和插入的速度極快索赏,不會隨著key的增加而變慢
  2. 需要占用大量的內(nèi)存盼玄,內(nèi)存浪費(fèi)多

注意:字典的key必須是<font color=Red>不可變對象</font>

這是因為dict根據(jù)key來計算value的存儲位置,如果每次計算相同的key得出的結(jié)果不同潜腻,那dict內(nèi)部就完全混亂了,這個通過key計算位置的算法稱為哈希算法(Hash)

要保證hash的正確性埃儿,作為key的對象就不能變。在Python中融涣,字符串童番、整數(shù)等都是不可變的,因此威鹿,可以放心地作為key剃斧,而list是可變的,就不能作為key

2.定義字典

  • 字典元素使用{}括起來
  • 鍵和值之間由冒號(:)分隔忽你,元素間由逗號(,)分隔
d={'name':'小明','sex':'男','age':'18'}

定義一個空字典

d={}

3.獲取字典長度

d={'name':'小明','sex':'男','age':'18'}
v=len(d)
print(v)

運(yùn)行結(jié)果

3

4.訪問字典元素

d={'name':'小明','sex':'男','age':'18'}
print(d['name'])
print(d['sex'])
print(d['age'])

運(yùn)行結(jié)果

小明
男
18

5.添加字典元素

d={'name':'小明','sex':'男','age':'18'}
d['score']=80
print(d)

運(yùn)行結(jié)果

{'name': '小明', 'sex': '男', 'age': '18', 'score': 80}

6.合并兩個字典

字典1.update(字典2)

d1={'name':'小明','sex':'男'}
d2={'age':'18','score':'80'}
d1.update(d2)  #將d2合并到d1中幼东,合并時直接加到末尾
print(d1)

d1={'name':'小明','sex':'男'}
d2={'age':'18','score':'80'}
d2.update(d1)   #將d1合并到d2中,合并時直接加到末尾
print(d2)

運(yùn)行結(jié)果

{'name': '小明', 'sex': '男', 'age': '18', 'score': '80'}
{'age': '18', 'score': '80', 'name': '小明', 'sex': '男'}

7.刪除字典元素

<1>字典.pop()

d={'name':'小明','sex':'男','age':'18'}
d.pop('sex')
print(d)

運(yùn)行結(jié)果

{'name': '小明', 'age': '18'}

<2>del 字典[鍵]

d={'name':'小明','sex':'男','age':'18'}
del d['name']
print(d)

運(yùn)行結(jié)果

{'sex': '男', 'age': '18'}

<3>隨機(jī)刪除

字典.popitem()

d={'name':'小明','sex':'男','age':'18'}
v=d.popitem()
print(d,v)

運(yùn)行結(jié)果

{'name': '小明', 'sex': '男'} ('age', '18')

8.判斷某個元素是否存在在字典里

<1>使用in關(guān)鍵字判斷字典中是否存在指定鍵的元素

鍵 in 字典

d={'name':'小明','sex':'男','age':'18'}
print('name' in d)
print('number' in d)

運(yùn)行結(jié)果

True
False

<2>通過dict提供的get()方法科雳,如果key不存在根蟹,可以返回None,或者自己指定的value

d={'name':'小明','sex':'男','age':'18'}
v=d.get('name')
print(v)
v=d.get('number')
print(v)
v=d.get('number',-1)
print(v)

運(yùn)行結(jié)果

小明
None
-1

9.遍歷字典元素

for key in 字典.keys(): #遍歷字典的鍵
訪問 字典[key]
for value in 字典.values(): #遍歷字典的值
訪問 字典[value]

遍歷鍵

d={'name':'小明','sex':'男','age':'18'}
for key in d.keys():
    print(key)

運(yùn)行結(jié)果

name
sex
age

遍歷值

for value in d.values():
    print(value)

運(yùn)行結(jié)果

小明
男
18

遍歷鍵和值

for key in d.items():
    print(key)

for key in d.keys():
    print('鍵'+key+'的值:'+d[key])

運(yùn)行結(jié)果

('name', '小明')
('sex', '男')
('age', '18')

鍵name的值:小明
鍵sex的值:男
鍵age的值:18

10.字典的嵌套

訪問嵌套字典

字典[鍵][鍵]

d={'name':{'first':'小明','last':'小李'},'age':'30'}
print(d['name']['first'])

運(yùn)行結(jié)果

小明

11.根據(jù)序列炸渡,創(chuàng)建字典娜亿,并指定統(tǒng)一的值

dict.fromkeys(鍵,值)

v=dict.fromkeys(['123','666','good'],45)
print(v)
v=dict.fromkeys(['123','666','good'])
print(v)

運(yùn)行結(jié)果

{'123': 45, '666': 45, 'good': 45}
{'123': None, '666': None, 'good': None}

12.設(shè)置值

字典.setdefault()

  • 已存在蚌堵,不設(shè)置,獲取當(dāng)前key對應(yīng)的值
  • 不存在,設(shè)置吼畏,獲取當(dāng)前key對應(yīng)的值
d={'k1':123,'k2':'apple'}
v=d.setdefault('k1','v1')
print(d,v)
v=d.setdefault('k3',666)
print(d,v)

運(yùn)行結(jié)果

{'k1': 123, 'k2': 'apple'} 123
{'k1': 123, 'k2': 'apple', 'k3': 666} 666

13.更新字典

字典.update()

d={'k1':123,'k2':'apple'}
d.update({'k1':1111,'k3':666})
print(d)

d={'k1':123,'k2':'apple'}
d.update(k1=111,k3=666)
print(d)

運(yùn)行結(jié)果

{'k1': 1111, 'k2': 'apple', 'k3': 666}
{'k1': 111, 'k2': 'apple', 'k3': 666}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末督赤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子泻蚊,更是在濱河造成了極大的恐慌躲舌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件性雄,死亡現(xiàn)場離奇詭異没卸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)秒旋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進(jìn)店門约计,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人迁筛,你說我怎么就攤上這事煤蚌。” “怎么了细卧?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵尉桩,是天一觀的道長。 經(jīng)常有香客問我贪庙,道長蜘犁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任止邮,我火速辦了婚禮这橙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘农尖。我一直安慰自己析恋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布盛卡。 她就那樣靜靜地躺著助隧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪滑沧。 梳的紋絲不亂的頭發(fā)上并村,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天,我揣著相機(jī)與錄音滓技,去河邊找鬼哩牍。 笑死,一個胖子當(dāng)著我的面吹牛令漂,可吹牛的內(nèi)容都是我干的膝昆。 我是一名探鬼主播丸边,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼荚孵!你這毒婦竟也來了妹窖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤收叶,失蹤者是張志新(化名)和其女友劉穎骄呼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體判没,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜓萄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了澄峰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嫉沽。...
    茶點(diǎn)故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖摊阀,靈堂內(nèi)的尸體忽然破棺而出耻蛇,到底是詐尸還是另有隱情,我是刑警寧澤胞此,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布臣咖,位于F島的核電站,受9級特大地震影響漱牵,放射性物質(zhì)發(fā)生泄漏夺蛇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一酣胀、第九天 我趴在偏房一處隱蔽的房頂上張望刁赦。 院中可真熱鬧,春花似錦闻镶、人聲如沸甚脉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牺氨。三九已至,卻和暖如春墩剖,著一層夾襖步出監(jiān)牢的瞬間猴凹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工岭皂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留郊霎,地道東北人。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓爷绘,卻偏偏與公主長得像书劝,于是被迫代替她去往敵國和親进倍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評論 2 355

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