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