《笨辦法學(xué)Python》筆記29-----字典屹逛,可愛的字典

字典

字典也是python中的基礎(chǔ)數(shù)據(jù)類型础废。

提到字典你可能會(huì)想到讀書時(shí)用的新華字典,使用它你可以通過(guò)筆劃或者拼音定位到漢字罕模,在python中把筆劃或者拼音叫做鍵评腺,通過(guò)鍵找到的漢字稱作值,python中的字典就是由鍵值對(duì)組成的集合淑掌,這個(gè)集合中的每個(gè)鍵都是唯一的蒿讥,不可重復(fù)。

dict = {key1:value1,key2:value2,...,keyn:valuen}

字典舉例

dictex = {'1':'beijing', 2:'newyork', 'shanghai':'china'}

字典中的鍵和值可以是任意類型數(shù)據(jù),字典可以任意類型關(guān)聯(lián)任意類型抛腕。

操作字典

stuff = {'name':'damao', 'age':36, 'height':175}

  • 索引

列表中芋绸,可通過(guò)從0開始的數(shù)字對(duì)列表中的元素進(jìn)行索引,如list1[1],list1[-2],list1[1:5],字典通過(guò)鍵進(jìn)行索引担敌,可返回相應(yīng)的值摔敛。以上例為例,stuff['name']返回‘damao’,stuff['age']返回36

  • 增加

通過(guò)對(duì)鍵值對(duì)全封,可以給字典增加元素马昙,但鍵不能跟字典中的鍵重復(fù)。

stuff['weight'] = 70

stuff[1] = 'what'

stuff[2] = 'how'

  • 刪除

清空字典使用clear函數(shù)刹悴,如stuff.clear()

刪除單個(gè)元素行楞,可使用關(guān)鍵字del,如del stuff[1]

還可以使用列表中也使用的pop函數(shù)刪除字典的元素并返回土匀,但字典中的pop函數(shù)至少有一個(gè)鍵參數(shù)子房,并不一定是刪除最后一個(gè)元素,字典中的數(shù)據(jù)是無(wú)序的恒削,所以并沒有第一個(gè)池颈,最后一個(gè)的說(shuō)法尾序。

如有一個(gè)字典

stuff = {'name':'damao', 'age':36,1:'test', 2:'a', 'height':175}

stuff.pop(1)可刪除鍵值對(duì)1:‘test’并返回‘test’

stuff.pop(3,'b')钓丰,不刪除任何字典元素但返回'b'

stuff.pop(2,'f')躯砰,刪除鍵值對(duì)2:'a',并返回'a'

使用popitem函數(shù)刪除并返回字典中的某個(gè)元素,如携丁,stuff.popitem()隨機(jī)刪除字典中的一對(duì)鍵值琢歇,并以tuple形式返回

  • 修改

可通過(guò)已知鍵索引對(duì)字典進(jìn)行修改

stuff['age'] = 45 #修改年齡

教材舉例

cities = {'CA':'San Francisco', 'MI':'Detroit', 'FL':'Jacksonville'}


cities['NY'] = 'New York'

cities['OR'] = 'Portland'

def find_city(themap, state):
  if state in themap:
    return themap[state]
  else:
    return "Not Found"

cities['_find'] = find_city #關(guān)聯(lián)一個(gè)函數(shù)地址到字典中

while True:
  print "State? (Enter to quit)",
  state = raw_input("> ")
  if not state: break

  city_found = cities['_find'](cities, state)
  print city_found

字典的大度是地球人都知道的,上例中就保存了一個(gè)函數(shù)地址在字典中梦鉴。

字典類型還有許多重要函數(shù)李茫,可通過(guò)查閱幫助文檔獲得。

如獲取字典中的鍵

| keys(...)
| D.keys() -> list of D's keys

獲取字典中的值

| values(...)
| D.values() -> list of D's values

獲取字典中的鍵值對(duì)

| items(...)
| D.items() -> list of D's (key, value) pairs, as 2-tuples

上例中有個(gè)隱藏的梗肥橙,那就是循環(huán)在啥情況下會(huì)退出魄宏?

if not state: break

state輸入什么值,python會(huì)認(rèn)為False?

state是通過(guò)raw_input函數(shù)獲得值的存筏,查看raw_input幫助


raw_input(...)
    raw_input([prompt]) -> string

    Read a string from standard input.  The trailing newline is stripped.
    If the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raise EOFError.
    On Unix, GNU readline is used if enabled.  The prompt string, if given,
    is printed without a trailing newline before reading.

1.raw_input函數(shù)的返回值是字符串

2.用戶觸發(fā)EOF宠互,拋出EOFError異常

EOF是什么鬼?

EOF椭坚,全稱END OF FILE,表示"文字流"(stream)的結(jié)尾予跌。這里的"文字流",可以是文件(file)善茎,也可以是標(biāo)準(zhǔn)輸入.

關(guān)于EOF有很多資料券册,這里截取一段

Linux中,在新的一行的開頭垂涯,按下Ctrl-D烁焙,就代表EOF(如果在一行的中間按下Ctrl-D,則表示輸出"標(biāo)準(zhǔn)輸入"的緩存區(qū)耕赘,所以這時(shí)必須按兩次Ctrl-D)考阱;Windows中,Ctrl-Z表示EOF鞠苟。(順便提一句乞榨,Linux中按下Ctrl-Z,表示將該進(jìn)程中斷当娱,在后臺(tái)掛起吃既,用fg命令可以重新切回到前臺(tái);按下Ctrl-C表示終止該進(jìn)程跨细。)

EOF@維基百科

EOF@阮一峰的網(wǎng)絡(luò)日志

這里還有一個(gè)梗鹦倚,為什么按回車鍵即正常退出,而不拋出EOF異臣讲眩或其他任何異常震叙?掀鹅??

為教材的舉例增加一些調(diào)試代碼

#coding:utf-8
cities = {'CA':'San Francisco', 'MI':'Detroit', 'FL':'Jacksonville'}


cities['NY'] = 'New York'

cities['OR'] = 'Portland'

def find_city(themap, state):
  if state in themap:
    return themap[state]
  else:
    return "Not Found"

cities['_find'] = find_city #關(guān)聯(lián)一個(gè)函數(shù)地址到字典中

while True:
  print "State? (Enter to quit)",
  state = raw_input("> ")
  print state              #打印輸入的字符串
  print len(state)         #計(jì)算輸入字符串長(zhǎng)度
  print bool(state)        #判斷輸入的真值True or False

  if not state: break

  city_found = cities['_find'](cities, state)
  print city_found


增加了按下回車鍵時(shí)媒楼,輸出一些輔助信息

從下面的鏈接中得知乐尊,linux系統(tǒng)中按下回車鍵相當(dāng)于輸入了'\n'實(shí)現(xiàn)回車換行操作。

而raw_input函數(shù)讀入標(biāo)準(zhǔn)輸入時(shí)是抹掉換行符的划址,所以按下回車鍵被刪掉換行符后扔嵌,raw_input的返回為空

執(zhí)行程序,按下回車鍵夺颤,看打印信息

damao@damao:~/Desktop$ python t.py
State? (Enter to quit) >

0
False
damao@damao:~/Desktop$

可以看到字符串長(zhǎng)度為0痢缎,真值測(cè)試為假

上述輸出的換行效果是print函數(shù)產(chǎn)生的,若去掉打印代碼世澜,直接按下回車鍵后独旷,輸出信息

damao@damao:~/Desktop$ python t.py
State? (Enter to quit) >
damao@damao:~/Desktop$

因此,按下回車鍵時(shí)沒有拋出異常寥裂。

關(guān)于回車換行

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嵌洼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子抚恒,更是在濱河造成了極大的恐慌咱台,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件俭驮,死亡現(xiàn)場(chǎng)離奇詭異回溺,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)混萝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門遗遵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人逸嘀,你說(shuō)我怎么就攤上這事车要。” “怎么了崭倘?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵翼岁,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我司光,道長(zhǎng)琅坡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任残家,我火速辦了婚禮榆俺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己茴晋,他們只是感情好陪捷,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著诺擅,像睡著了一般市袖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上掀虎,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天凌盯,我揣著相機(jī)與錄音付枫,去河邊找鬼烹玉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛阐滩,可吹牛的內(nèi)容都是我干的二打。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼掂榔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼继效!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起装获,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤瑞信,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后穴豫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凡简,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年精肃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秤涩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡司抱,死狀恐怖筐眷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情习柠,我是刑警寧澤匀谣,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站资溃,受9級(jí)特大地震影響武翎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜肉拓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一后频、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦卑惜、人聲如沸膏执。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)更米。三九已至,卻和暖如春毫痕,著一層夾襖步出監(jiān)牢的瞬間征峦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工消请, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留栏笆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓臊泰,卻偏偏與公主長(zhǎng)得像蛉加,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子缸逃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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

  • php usleep() 函數(shù)延遲代碼執(zhí)行若干微秒针饥。 unpack() 函數(shù)從二進(jìn)制字符串對(duì)數(shù)據(jù)進(jìn)行解包。 uni...
    思?jí)鬚HP閱讀 1,981評(píng)論 1 24
  • PHP常用函數(shù)大全 usleep() 函數(shù)延遲代碼執(zhí)行若干微秒需频。 unpack() 函數(shù)從二進(jìn)制字符串對(duì)數(shù)據(jù)進(jìn)行解...
    上街買菜丶迷倒老太閱讀 1,352評(píng)論 0 20
  • Python簡(jiǎn)介 Python歷史 Python 是由 Guido van Rossum 在八十年代末和九十年代初...
    莫名其妙的一生閱讀 1,040評(píng)論 0 2
  • 孤獨(dú)的靈魂拜倒在江南春天里 美的令人窒息 煩躁的心投⊙郏靠在布達(dá)拉宮 空靈的無(wú)法比擬 浮夸的社會(huì),繁華的街 找不到合適...
    二兩酒仙閱讀 343評(píng)論 13 36
  • 早上六點(diǎn)昭殉,清晨的第一縷陽(yáng)光已經(jīng)照進(jìn)這座城市苞七,試圖叫醒那些還在熟睡的人。麗君像往常一樣饲化,已經(jīng)起床洗漱完畢,開始...
    愛吹牛的實(shí)話家閱讀 1,358評(píng)論 4 11