摘要:大家好,我是小白,書(shū)接上回,我們目前已經(jīng)了解到了中很常見(jiàn)的一種數(shù)據(jù)類(lèi)型,也初步掌握了一些自帶的有關(guān)的方法今天為大家介紹另外一種異常火爆的數(shù)據(jù)結(jié)構(gòu)字典,不夸張的講,基本上我們熟悉了列表和字典后有關(guān)數(shù)據(jù)結(jié)構(gòu)這里就差不多啦,實(shí)際的項(xiàng)目中應(yīng)用的最多
大家好,我是小白,書(shū)接上回,我們目前已經(jīng)了解到了Python中很常見(jiàn)的一種數(shù)據(jù)類(lèi)型:List,也初步掌握了一些Python自帶的有關(guān)List的方法,今天為大家介紹另外一種異常火爆的數(shù)據(jù)結(jié)構(gòu):字典Dictionary,不夸張的講,基本上我們熟悉了列表和字典后有關(guān)數(shù)據(jù)結(jié)構(gòu)這里就差不多啦,實(shí)際的項(xiàng)目中應(yīng)用的最多的也是這兩種,至于其他的Set,Tuple平時(shí)用的不多~
字典到底是什么簡(jiǎn)單來(lái)說(shuō),字典是另一種可變數(shù)據(jù)類(lèi)型,且可存儲(chǔ)任意類(lèi)型對(duì)象。就是說(shuō)字典里面存儲(chǔ)的值我們可以修改~
字典的每個(gè)鍵值(key=>value)對(duì)用冒號(hào)(:)分割,每個(gè)對(duì)之間用逗號(hào)(,)分割,整個(gè)字典包括在花括號(hào)({})中 ,格式如下所示:
d = { #這里d的結(jié)構(gòu)就是一個(gè)字典: , #基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)就是一個(gè)key=>value : , . . . : }
鍵必須是唯一的,但值則不必。值可以取任何數(shù)據(jù)類(lèi)型,我會(huì)在接下來(lái)用詳細(xì)的例子詳細(xì)解釋。
如果我們要把字典和列表做一個(gè)對(duì)比總結(jié)的話,可以發(fā)現(xiàn)如下特點(diǎn):
列表和字典的值都可以被修改
列表和字典都是動(dòng)態(tài)結(jié)構(gòu),也就是說(shuō)可以任意插入值,無(wú)限擴(kuò)展
列表中獲取值的方式是通過(guò)Index(索引)
字典中獲取值是通過(guò)key(鍵)
列表字典都可以層次嵌套,比如一個(gè)列表中的值可以是另一個(gè)列表,
好啦,讓我們現(xiàn)在開(kāi)始今天的栗子吧~
Dictionary字典常用方法(內(nèi)含扎心舉例):創(chuàng)建一個(gè)字典
首先,不知道有沒(méi)有小白朋友們感到疑惑,既然已經(jīng)有列表了,為啥還需要字典這種數(shù)據(jù)結(jié)構(gòu) ?原因很簡(jiǎn)單哈哈,出于實(shí)際需要,我來(lái)舉個(gè)令人傷心的例子說(shuō)明:
你是北京知名985,211畢業(yè)的北漂有為青年xiaobai,躲過(guò)了這輪互聯(lián)網(wǎng)寒冬,23歲的你每天最?lèi)?ài)穿著格子衫去街角咖啡廳點(diǎn)一杯可以無(wú)限續(xù)杯的伯爵紅茶,順便打量著周?chē)?5度仰臉拍抖音的小姐姐,意淫著一些不可告人的事情,這時(shí)來(lái)了一個(gè)青春無(wú)比的妹子,交談甚歡后,同為北漂的她得知你技術(shù)入股進(jìn)入一家創(chuàng)業(yè)公司,以及老板忽悠你的超級(jí)大餅和期權(quán),內(nèi)心狂喜,碰到潛力股了呀,程序猿呀,技術(shù)入股呀 !而你以多年老司機(jī)經(jīng)驗(yàn)用余光掃描了妹子的三圍,得出結(jié)論大概是82,62,82后,立刻邀請(qǐng)她去廁所做了一些羞羞的事情( 此處省略 6秒 ),幾個(gè)月后迅速結(jié)婚然后生了一個(gè)丑萌的孩子...
好啦,請(qǐng)你把這段經(jīng)歷用列表來(lái)表示一下 ? WTF! 答案幾乎不可能,但是用字典的話某種程度上會(huì)解釋的清楚一些~ 哈哈
如果用列表,就只能這么表示:
young_man = ["xiaobai",985,23,"Developper".......]
完全不懂在說(shuō)啥呀...但是如果用字典會(huì)舒服的多:
young_man = {"first_name":"bai", "family_name":"xiao", "age":23, "city":"Beijing", "university_rank":"985", "university_name":"beida", "job":"Developer", "salary":20000.00, "company":"Start Up", "married":True, "wife_measurements":[82,62,82], "number_of_children":1, "future":None }
瞬間感覺(jué)信息量暴漲有木有 ! 其實(shí)當(dāng)我最開(kāi)始接觸字典的時(shí)候,我對(duì)它的第一感覺(jué)是經(jīng)過(guò)select語(yǔ)句從數(shù)據(jù)庫(kù)查詢出的一個(gè)結(jié)果哈哈~, 好啦,讓我們查看一下我們創(chuàng)建的這個(gè)字典:
print(young_man) Out: {"first_name": "bai", "family_name": "xiao", "age": 23, "city": "Beijing", "university_rank": "985", "university_name": "beida", "job": "Developer", "salary": 20000.00, "company": "Start Up", "married": True, "wife_measurements": [82, 62, 82], "number_of_children": 1, "future": None}
大家可以發(fā)現(xiàn)輸出的格式和創(chuàng)建的格式基本一樣,都是符合上面我們提到過(guò)的key=>value 的形式,這里我們創(chuàng)建了一個(gè)字典并把字典的值賦給變量young_man,幾點(diǎn)需要大家注意:
字典的鍵是唯一的,類(lèi)型也可以為int,我這個(gè)例子都是str類(lèi)型,但是基本int類(lèi)型的極少
在"university_name":"985" 這組信息中985是字符型,但是底下"number_of_children"的值為1,1是int型
字典的值可以是一個(gè)列表或者另一個(gè)列表,比如這里"wife_measurements’是指xiaobai老婆的三圍,那可以傳遞一個(gè)包含三個(gè)值的列表,這也是我們上面說(shuō)到過(guò)的列表字典都可以相互嵌套
字典的值可以是任意類(lèi)型,比如這里的"future":None, 因?yàn)椋驗(yàn)槟銢](méi)有未來(lái)啊,啊哈哈
訪問(wèn)字典里的值
現(xiàn)在我們已經(jīng)成功創(chuàng)建了一個(gè)字典,那么如何獲取字典中的值呢?我們知道在List中可以通過(guò)切片[start_index:end_index]來(lái)獲取,字典里提供了另一種形式:
dict[name_of_key] #把相應(yīng)的鍵放入到方括號(hào)中
現(xiàn)在讓我們獲得xiaobai的姓和工資:
print("The first name of young man is :", young_man["first_name"]) print("Salary of young man:",young_man["salary"]) Out: The first name of young man is: bai Salary of young man: 20000.00
很簡(jiǎn)單吧,如果是xiaobai老婆的三圍呢?
print(young_man["wife_measurements"]) Out:[82, 62, 82]
如果就對(duì)胸圍感興趣呢? 因?yàn)?wife_measurements"這個(gè)鍵對(duì)應(yīng)的值為一個(gè)列表,我們可以接著使用列表獲取值的方法:
print("The Bust measure is",young_man["wife_measurements"][0],"cm") Out: The Bust measure is 82 cm
如果對(duì)所有的值都感興趣呢?那很簡(jiǎn)單,字典提供了一個(gè)非常簡(jiǎn)單的方法values():
print(young_man.values()) Out:dict_values(["bai", "xiao", 23, "Beijing", "985", "beida", "Developer", 10000, "Start Up", True, [82, 62, 82], 1, None])
這樣我們就獲得young_man里面所有的值了
訪問(wèn)字典里的鍵
不用多解釋,很簡(jiǎn)單,也是一個(gè)自帶的方法.keys():
print(young_man.keys()) Out: dict_keys(["first_name", "family_name", "age", "city", "university_rank", "university_name", "job", "salary", "company", "married", "wife_measurements", "number_of_children", "future"])
訪問(wèn)字典里的鍵和值
經(jīng)過(guò)上面的介紹,我們可以分別獲得字典的值和鍵,現(xiàn)在我們要把他們?nèi)诤弦幌拢鋵?shí)很簡(jiǎn)單,因?yàn)楸旧碜值淇梢缘?
for k,v in young_man.items(): print(k,":",v) Out:first_name : bai family_name : xiao age : 23 city : Beijing university_rank : 985 university_name : beida job : Developer salary : 10000 company : Start Up married : True wife_measurements : [82, 62, 82] number_of_children : 1 future : None
字典里有一個(gè)方法:.items(),說(shuō)白了就是獲取到當(dāng)前的鍵和值,這里我們用一個(gè)for循環(huán)可以迭代這個(gè)字典,分別輸出鍵和值,這里注意一下,k,v是什么不重要,大家可以把k,v換成其他的字母都是沒(méi)有問(wèn)題的,有關(guān)字典的很多實(shí)用技巧我們下一期會(huì)講。
添加,修改字典里的值
結(jié)婚1年后的你攢了10萬(wàn)塊,加上6個(gè)錢(qián)包的100萬(wàn)在北京付了首付,買(mǎi)來(lái)了小兩居,然而丑萌的孩子,漂亮的老婆,加上房子的月供讓你不堪重負(fù),好在經(jīng)過(guò)你的努力,現(xiàn)在的工資已經(jīng)漲到了3萬(wàn),變成了傳說(shuō)中的產(chǎn)品經(jīng)理,身旁電視里響起共克時(shí)艱的號(hào)召,看似美好的生活向你招手,但壞消息突然接踵而至,首先第二個(gè)孩子的出生讓你的經(jīng)濟(jì)狀況雪上加霜,你在感嘆杜蕾斯的產(chǎn)品質(zhì)量同時(shí)突然發(fā)現(xiàn)事情有些不對(duì)......
你忽然回憶起很多細(xì)節(jié),最近幾個(gè)月趕項(xiàng)目,經(jīng)常在深夜回家時(shí)發(fā)現(xiàn)一輛扎眼的保時(shí)捷正開(kāi)出小區(qū),到家時(shí)妻子經(jīng)常滿面潮紅的剛剛洗完澡出現(xiàn)在你面前, 你經(jīng)常關(guān)注著中興老員工跳樓,xxx創(chuàng)業(yè)失敗煤氣自殺等負(fù)面新聞,卻忽略了妻子錢(qián)包多出來(lái)的各種美容健身購(gòu)物酒店卡....
眼前冒綠星的你心中一涼,拿起土著的照片看了看,又看看自己懷里新出生的老二,眉宇間竟有幾分相似,腦袋嗡的一聲后決定要去做親子鑒定...
首先先讓我們看看如何在字典里新加一個(gè)值,讓我們把xiaobai的銀行存款和買(mǎi)加進(jìn)去:
young_man["bank_account"]=100000 young_man["Own_house"]=True
其實(shí)很簡(jiǎn)單啦,只要把ke和value按照?qǐng)D中形式添加就好了,這個(gè)時(shí)候我們?cè)倏磞oung_man這個(gè)字典就會(huì)發(fā)現(xiàn)已經(jīng)多了兩個(gè)值:
{"first_name": "bai", "family_name": "xiao", "age": 23, "city": "Beijing", "university_rank": "985", "university_name": "beida", "job": "Developer", "salary": 20000.0, "company": "Start Up", "married": True, "wife_measurements": [82, 62, 82], "number_of_children": 1, "future": None, "bank_account": 100000, "Own_house": True}
其次,xiaobai的職業(yè),薪水,和孩子的數(shù)量有了變化,此時(shí)需要對(duì)字典中對(duì)應(yīng)的值進(jìn)行修改,這里十分簡(jiǎn)單:
young_man["age"]+=1 young_man["job"] = "Product Manager" young_man["salary"]=30000.00 young_man["number_of_children"]=2
再看一下現(xiàn)在的young_man:
{"first_name": "bai", "family_name": "xiao", "age": 24, "city": "Beijing", "university_rank": "985", "university_name": "beida", "job": "Product Manager", "salary": 30000.0, "company": "Start Up", "married": True, "wife_measurements": [82, 62, 82], "number_of_children": 2, "future": None, "bank_account": 100000, "Own_house": True}
此外如果修改多個(gè)值,用update()是最方便的,我們下一篇筆記會(huì)說(shuō)~
刪除字典里的值
醫(yī)院的結(jié)果出來(lái)了,不出意料,杜蕾斯質(zhì)量沒(méi)問(wèn)題,你迅速回到家中準(zhǔn)備興師問(wèn)罪,卻發(fā)現(xiàn)妻子早已準(zhǔn)備好了離婚協(xié)議,在暴怒之中的你想也沒(méi)想就選擇了凈身出戶,把所有的一切都留給了妻子,自己沒(méi)日沒(méi)夜地工作期待有一天公司上市自己套現(xiàn)離場(chǎng),繼續(xù)開(kāi)始人生下半場(chǎng),然而一切都是命中注定,不知怎么,你也成為了《就算老公一毛錢(qián)股份都沒(méi)拿到,在我心里,他依然是最牛逼的創(chuàng)業(yè)者》里的主角,命運(yùn)向你展示了它猙獰的一面,你最后的希望隨之破滅,終日借酒澆愁。
在一個(gè)百無(wú)聊賴的晚上,你帶著僅有的幾千塊錢(qián)做了一次高級(jí)大保健,負(fù)責(zé)給你服務(wù)的小姐姐名叫skyler,來(lái)自美國(guó)新墨西哥州的Albuquerque市,人生失意的你唱著崔健的<<一無(wú)所有>>和她傾訴了自己的前半生,笑靨如花的小姐姐安慰了你,向你描述了美利堅(jiān)大地上美好的一切和自己同樣悲慘的前半生,同時(shí)天涯淪落人,相逢何必曾相識(shí)!
伴隨著大保健配套的bgm《沙漠駱駝》,醉眼朦朧的你仿佛看到了遙遠(yuǎn)的Albuquerque市,便宜的大別墅和skyler的笑臉,一切盡在咫尺,卻又遙不可及。。。
回到正題,這里xiaobai選擇凈身出戶,因此很多屬于他的東西全部沒(méi)了,刪除字典中的值很簡(jiǎn)單,只需要del關(guān)鍵字:
這里刪除的東西有點(diǎn)多,我利用了上篇筆記講過(guò)的知識(shí),首先建立了一個(gè)列表,裝入young_man的想要?jiǎng)h除的鍵值,然后利用迭代一次刪除,這并不是一個(gè)優(yōu)雅的方法,但是目的是讓大家看一下列表和字典的一個(gè)結(jié)合操作,現(xiàn)在再看一下young_man:
{"first_name": "bai", "family_name": "xiao", "age": 24, "city": "Beijing", "university_rank": "985", "university_name": "beida", "future": None}
這個(gè)時(shí)候如果我們還想看看銀行存款是不可能的了,如果我們嘗試?yán)戏椒ǎ?/p>
young_man["bank_account"] # ERROR
會(huì)很容易的報(bào)錯(cuò),因?yàn)樵谧值渲幸呀?jīng)沒(méi)有這個(gè)值了,為了避免報(bào)錯(cuò),我推薦大家使用get方法:
print(young_man.get("bank_account","Not Found")) # 如果沒(méi)有輸出Not Found Out: Not Found
創(chuàng)建字典的其他方式*
還未到30的你做出了一個(gè)人生中最重要的決定,那就是和skyler一起去她的老家Albuquerque市,從零開(kāi)始
你用你僅存的化學(xué)知識(shí)在當(dāng)?shù)氐母咧兄\取到了一個(gè)化學(xué)老師的工作,利用自己姓名xiaobai起了一個(gè)地道的美國(guó)名字:Walter White, 小城市的生活悠閑愜意,當(dāng)?shù)氐恼u店“Los Pollos Hermanos”味美絕倫,你和skyler也有了愛(ài)的結(jié)晶,又一個(gè)丑萌而且先天殘疾的孩子出生了。。
此時(shí)的xiaobai已經(jīng)有了全新的身份,這里我們換一種方式創(chuàng)建他的全新個(gè)人信息:
walter_white_keys = ["name","age","job","subject","adress","wife"] walter_white_values = ["Walter White",50,"Teacher","Chemistry","Albuquerque","Skyler"] Breaking_Bad = dict(zip(walter_white_keys,walter_white_values))
查看一下全新的老白:
print(Breaking_Bad) {"name": "Walter White", "age": 50, "job": "Teacher", "subject": "Chemistry", "adress": "Albuquerque", "wife": "Skyler"}
清空字典*
你也會(huì)時(shí)常想起國(guó)內(nèi)拋下的孩子,感慨天道有輪回,善惡到頭終有報(bào),20年如白駒過(guò)隙, 稍縱即逝,此刻你已年近50,知天命的年齡被診斷出了癌癥,正當(dāng)你覺(jué)得人生無(wú)望的時(shí)候,一個(gè)曾經(jīng)教過(guò)的小混混學(xué)生Jesse Pinkman出現(xiàn)在你的面前,從此江湖上開(kāi)始了你的傳說(shuō)。。。
故事的最后,你看著腹部緩緩流出的鮮血,沒(méi)有理會(huì),依然專注地在制作眼前令無(wú)數(shù)人癡迷的藍(lán)色結(jié)晶物,直到體力不支緩緩倒地,在生命的最后時(shí)刻,伴隨著耳邊的《Baby Blue》,眼前依稀看到了30年的那個(gè)意氣風(fēng)發(fā)的少年坐在街邊咖啡館,正專注地學(xué)習(xí)Python,直到一個(gè)女孩款款向他走來(lái)。。。。。。
至此,一代梟雄終落幕,最后讓我們?nèi)套⊙蹨I,敲下最后的代碼:
Breaking_Bad.clear() del Breaking_Bad
我想可能有一句話能概括最后時(shí)刻老白的內(nèi)心想法:我愛(ài)你不后悔,也尊重故事的結(jié)尾
如果你也是老白的粉絲,那就擴(kuò)散吧,完結(jié),撒花~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/43077.html
摘要:好啦,那如果我現(xiàn)在想要改變中一個(gè)值也很簡(jiǎn)單,因?yàn)槲覀兞私饬怂饕隳芎芊奖愕亩ㄎ辉乩玻绻乙薷暮偷闹禐槿绻莿h除的話可以用的自帶函數(shù)叫或者注意兩點(diǎn)如果正確刪除,不會(huì)有任何反饋。沒(méi)有消息就是好消息如果所刪除的內(nèi)容不在中,就報(bào)錯(cuò)。 什么是List Hello,小白同胞們,我回來(lái)啦,前面的學(xué)習(xí)中,我們已經(jīng)知道了兩種python的數(shù)據(jù)類(lèi)型:int和str,今天將要給大家接著介紹Pytho...
摘要:嘗射于家圃,有賣(mài)油翁釋擔(dān)而立,睨之,久而不去。康肅問(wèn)曰汝亦知射乎吾射不亦精乎翁曰無(wú)他,但手熟爾。康肅忿然曰爾安敢輕吾射翁曰以我酌油知之。 開(kāi)啟變身模式 大家好, 從這一期開(kāi)始,我們會(huì)從小白變身為中等小白,在基礎(chǔ)起步階段有太多的東西我沒(méi)有講到,但是俗話說(shuō)的好,無(wú)他,但手熟爾,只要多多練習(xí),時(shí)間會(huì)是最好的證明,相信我們終有一天會(huì)成為高手,因此從這一系列開(kāi)始,讓我們一起更上一層樓,還是和往常...
摘要:什么是推導(dǎo)式大家好,今天為大家?guī)?lái)問(wèn)我最喜歡的推導(dǎo)式使用指南,讓我們先來(lái)看看定義推導(dǎo)式是的一種獨(dú)有特性,推導(dǎo)式是可以從一個(gè)數(shù)據(jù)序列構(gòu)建另一個(gè)新的數(shù)據(jù)序列的結(jié)構(gòu)體。 什么是推導(dǎo)式 大家好,今天為大家?guī)?lái)問(wèn)我最喜歡的Python推導(dǎo)式使用指南,讓我們先來(lái)看看定義~ 推導(dǎo)式(comprehensions)是Python的一種獨(dú)有特性,推導(dǎo)式是可以從一個(gè)數(shù)據(jù)序列構(gòu)建另一個(gè)新的數(shù)據(jù)序列的結(jié)構(gòu)體。...
摘要:布爾值布爾值和布爾代數(shù)的表示完全一致,一個(gè)布爾值只有兩種值的數(shù)據(jù)類(lèi)型可以通過(guò)內(nèi)置的函數(shù)查詢,例如還可以用來(lái)判斷和的區(qū)別在于不會(huì)認(rèn)為子類(lèi)是一種父類(lèi)類(lèi)型。會(huì)認(rèn)為子類(lèi)是一種父類(lèi)類(lèi)型。基本功能是進(jìn)行成員關(guān)系測(cè)試和刪除重復(fù)元素。 ...
摘要:,同為小白的朋友們大家好,這期主要為大家?guī)?lái)有關(guān)字典的一些實(shí)用技巧。上篇筆記通過(guò)感人肺腑的老白讓大家認(rèn)識(shí)到了字典這么有用的數(shù)據(jù)類(lèi)型,這一期讓我們看看如何能更好的操作字典。 Hello ,同為小白的朋友們大家好,這期主要為大家?guī)?lái)有關(guān)字典的一些實(shí)用技巧。上篇筆記通過(guò)感人肺腑的老白讓大家認(rèn)識(shí)到了字典這么有用的數(shù)據(jù)類(lèi)型,這一期讓我們看看如何能更好的操作字典。 基礎(chǔ)篇 下面我給大家來(lái)一個(gè)簡(jiǎn)單的...
閱讀 3270·2021-10-11 10:59
閱讀 2833·2021-10-11 10:58
閱讀 2246·2021-09-04 16:45
閱讀 2724·2019-08-30 15:44
閱讀 677·2019-08-30 15:44
閱讀 3205·2019-08-30 10:51
閱讀 1601·2019-08-29 18:46
閱讀 2758·2019-08-29 13:57