日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

《Python编程从入门到实践》学习笔记6:字典

發布時間:2025/3/18 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Python编程从入门到实践》学习笔记6:字典 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  字典是Python中的唯一的映射類型,也是一個容器類型。Python的字典能夠存儲任意個數的Python對象,也包括其他容器類型。創建一個基本的字典,需要包括字典名稱,以及用花括號擴起來的鍵值對,如下所示:

alien_0 = {'coclor': 'green','points' : 5}

  在上例中可以看到,一個基本的字典創建所需的所有元素,字典名稱、花括號以及鍵值對,不同的鍵值對用逗號隔開,要想訪問這個字典的值,最基本的方法如下所示:

alien_0 = {'coclor': 'green','points' : 5}print(alien_0['coclor']) print(alien_0['points'])

  如上例所示,通過字典名稱引用鍵來獲取值,是字典值訪問的常用方式,輸出結果如下所示:

green 5

  對于值的操作,慣例來說是有四種方式的,即增刪改查!上例中的方式算是查詢值,那么對于增刪改的操作則如下所示:

#創建字典person存儲姓名,年齡和城市字段 person = {'name':'張飛','age':18,'city':'河北'} print("最初的字典值:") print(person) print("---------------------------------------------------------------") #添加武器作為新的值 person['arms'] = '丈八蛇矛' print("添加新鍵值對的字典值:") print(person) print("---------------------------------------------------------------") #刪除上段代碼中添加的武器 del person['arms'] print("刪除鍵值對的字典值:") print(person) print("---------------------------------------------------------------") #修改姓名和年齡 person['name'] = '劉備' person['age'] = 20 print("修改最初鍵值對的字典值:") print(person)

  上述中的增刪改操作,都是對字典值的永久性變更操作,因此對于輸出結果來說,是無法倒退回去的,想要恢復原值只能重新構建或修改回去,上例輸出結果如下所示:

最初的字典值: {'name': '張飛', 'age': 18, 'city': '河北'} --------------------------------------------------------------- 添加新鍵值對的字典值: {'name': '張飛', 'age': 18, 'city': '河北', 'arms': '丈八蛇矛'} --------------------------------------------------------------- 刪除鍵值對的字典值: {'name': '張飛', 'age': 18, 'city': '河北'} --------------------------------------------------------------- 修改最初鍵值對的字典值: {'name': '劉備', 'age': 20, 'city': '河北'}

  對于Python中字典值增刪改查的基本操作,如上所示,大都是直接引用的操作,而對于字典的遍歷則相對復雜,它包含對鍵的遍歷,對值的遍歷和對所有內容的遍歷。

對于鍵值對的遍歷,可以使用函數" items() "來實現,以習題6-3為例:

vocabulary = {'int':'整型','float':'浮點型','string':'字符串','date':'日期型','number':'數值型'} for key,value in vocabulary.items():print(key + "" + value!\n")

  如上例所示," items() "函數的使用很簡單,首先構建字典vocabulary,然后在for循環中定義變量key和value,用來存儲鍵和值的結果,接著讓字典引用函數" items() "取出其中的鍵值對,最后輸出結果即可," items() "方法能夠返回鍵值對的列表,輸出結果如下所示:

int是整型!float是浮點型!string是字符串!date是日期型!number是數值型的!

  并不是任何情況下使用字典的時候,我們都要遍歷字典全部鍵值對的,有時候可能只需要遍歷鍵或者遍歷值來滿足特定的需求,這是就要用到函數" keys() "和" values() "來專門獲取字典的鍵和值,如下所示:

vocabulary = {'int':'整型','float':'浮點型','string':'字符串','date':'日期型','number':'數值型'} #遍歷字典中所有的鍵 print("用函數keys()來獲取鍵:") for key in vocabulary.keys():print("\t" + key) print("\n---------------------------------------------------------------\n") #遍歷字典中所有的值 print("用函數values()來獲取值:") for value in vocabulary.values():print("\t" +value)

  上例中,分別定義變量key和value,來存儲通過函數" keys() "和" values() "獲取到的鍵和值的結果,輸出結果如下所示:

用函數keys()來獲取鍵:intfloatstringdatenumber---------------------------------------------------------------用函數values()來獲取值:整型浮點型字符串日期型數值型

  事實上對于結合之前學習的各種知識的例題,書中有很多很有趣的案例,比如說遍歷字典時添加if判斷的例子,如下所示:

favorite_languages = {'jen':'python','sarah':'c','edward':'ruby','phil':'python', }friends = ['phil','sarah']for name in favorite_languages.keys():print(name.title())if name in friends:print(name.title() + "'s favorite language is "",I see your favorite language is " +favorite_languages[name].title())

  在這個例子中,先創建了一個字典favorite_languages,緊接著又創建了一個列表friends,里面包含了字典favorite_languages中的部分鍵,for循環的意義在于,當鍵的值不在列表?friends中時,只輸出姓名,否則需要輸出完整的話來,輸出結果如下所示:

?

Jen Sarah Sarah's favorite language is ,I see your favorite language is C Edward Phil Phil's favorite language is ,I see your favorite language is Python

  這是一種很有用的例子,比如你在分發考卷時,需要叫一次人名上來一個同學,如果叫到你的朋友,而他考的很不錯的時候,你可以加上一句:伙計,干的漂亮!推而廣之,很多地方都會用到這個方法。

  在開頭的時候,我們說到字典是一種容器類型,他也可以存儲其他容器類型,比如存儲列表,甚至存儲字典!當然,同為容器類型的列表,也可以存儲字典,如下所示:

?

alien_0 = {'color':'green','points':5} alien_1 = {'color':'yellow','points':10} alien_2 = {'color':'red','points':15}aliens = [alien_0,alien_1,alien_2]for alien in aliens:print(alien)

?

  這是書中的例子,將三個字典放在一個列表里,輸出結果如下所示:

{'color': 'green', 'points': 5} {'color': 'yellow', 'points': 10} {'color': 'red', 'points': 15}

  由上例可以看出,將自丟按存入列表中的時候,字典其實是作為列表中的元素的狀態存在的,因此訪問這些字典的時候,用的也是最基礎的列表訪問的方法。當打開列表獲取到列表中的元素以后,想要訪問字典里面的鍵值對,當然也應該用訪問字典的方式來操作字典的值,如書中例子所示:

aliens = [] #通過range()函數生成30條數據 for alien_number in range(30):new_alien = {'color': 'green', 'points': 5,'speed':'slow'}aliens.append(new_alien) print("獲取前五條數據,并查看列表長度")for aline in aliens[:5]:print(aline) print("……") print("Total number of aliens: " + str(len(aliens))) print("---------------------------------------------------------------")#修改前三條數據的值 for alien1 in aliens[:3]:if alien1['color'] == 'green':alien1['color'] = 'yellow'alien1['points'] = 10alien1['speed'] = 'medium'print("查看前五條數據的變化") for aline1 in aliens[:5]:print(aline1)

  先創建空列表aliens來存儲生成的數據,然后根據不同的需求,分別對數據進行處理,對應的輸出結果如下所示:

獲取前五條數據,并查看列表長度 {'color': 'green', 'points': 5, 'speed': 'slow'} {'color': 'green', 'points': 5, 'speed': 'slow'} {'color': 'green', 'points': 5, 'speed': 'slow'} {'color': 'green', 'points': 5, 'speed': 'slow'} {'color': 'green', 'points': 5, 'speed': 'slow'} …… Total number of aliens: 30 --------------------------------------------------------------- 查看前五條數據的變化 {'color': 'yellow', 'points': 10, 'speed': 'medium'} {'color': 'yellow', 'points': 10, 'speed': 'medium'} {'color': 'yellow', 'points': 10, 'speed': 'medium'} {'color': 'green', 'points': 5, 'speed': 'slow'} {'color': 'green', 'points': 5, 'speed': 'slow'}

  由上例可以看出,對于列表中字典值的修改,其實就是多了一步從列表中取出字段的步驟,當字典取出后的操作方式就是處理字典的操作方式。同理字典嵌套列表的操作方式也應當如此,先獲取字典中的列表,再直接操作列表,如下所示:

#構建字典favorite_languages,每個人名對應喜歡的語言 favorite_languages= {'jen' : ['python','ruby'],'sarah' : ['c'],'edward' : ['ruby','go'],'phil' : ['python'], } #在for循環中對每個人喜歡的語言數量進行判斷,輸出不同的語句 for name,languages in favorite_languages.items():if len(languages) > 1:print("\n" + name.title() + "'s favorite languages are:")for language in languages:print("\t" + language.title())elif len(languages) == 1:print("\n" + name.title() + "'s favorite language is:")for language in languages:print("\t" + language.title())

  上例是根據書中例子更改后得到的,先定義字典favorite_languages,然后按照人名為鍵,分別輸入他們喜歡的語言一門或數門,在下方通過for循環,針對每個人喜歡語言數量的不同,分別輸出相對應的語句,輸出結果如下所示:

Jen's favorite languages are: PythonRubySarah's favorite language is: CEdward's favorite languages are: RubyGoPhil's favorite language is:Python

  顯然,Sarah和Phil的輸出與Jen跟Edward的不同,這道題的難點在于你可能想不到如何處理判斷喜歡語言數量的問題,因為len()函數的靈活運用對于新人來說,可能有些難以聯想到。

  無論是字典嵌套列表還是列表嵌套字典,理清關系后處理起來都不是特別復雜,但是對于字典嵌套字典的問題,有時候會因為數據量的關系,導致處理起來相對復雜。不過從例題的角度上來說,我們不給自己找麻煩,如下所示:

users = {'aeinstein' : {'first':'albert','last':'einstein','location':'princetion',},'mcurie' : { 'first': 'marie','last': 'curie','location': 'paris',} }for username,user_info in users.items():print("\nUsername: " + username)full_name = user_info['first'] + " " + user_info['last']location = user_info['location']print("\tFull name:" + full_name.title())print("\tLocation:" + location.title())

  這是一道書上的例題,定義字典users,用來存儲兩個鍵'aeinstein'和'mcurie',他們的值都是字典。案例中的處理方式是直接誰用處理普通字典的方式打開外層的字典,再用相同的方式處理內層嵌套的字典,這種處理方式并不復雜,但麻煩的地方在于有時候嵌套進去的每個內層字典的鍵值對未必是一樣的,因此批量處理的時候會很麻煩。

  PS:以上是關于字典內容的小結,關于課后習題,除了在文中距離的部分外,還有幾道我覺得挺有意思的,一并發上來做記錄吧!

#6-7 #在為完成練習6-1而編寫的程序中,再創建兩個表示人的字典, #然后將這三個字典都存儲在一個名為people 的列表中。遍歷這個列表,將其中每個人的所有信息都打印出來。 person_1 = {'first_name':'','last_name':'','age':20,'city':'河北'} person_2 = {'first_name':'','last_name':'','age':19,'city':'山西'} person_3 = {'first_name':'','last_name':'','age':18,'city':'河北'}persons = [person_1,person_2,person_3]#遍歷方式一: print(persons) print("---------------------------------------------------------------") #遍歷方式二: for person in persons:print(person) print("---------------------------------------------------------------") #加點花樣: for person in persons:full_name = person['first_name'] + person['last_name']print(person['city'] + full_name + "現在" + str(person['age']) + "歲!")#輸出結果如下: [{'first_name': '', 'last_name': '', 'age': 20, 'city': '河北'}, {'first_name': '', 'last_name': '', 'age': 19, 'city': '山西'}, {'first_name': '', 'last_name': '', 'age': 18, 'city': '河北'}] --------------------------------------------------------------- {'first_name': '', 'last_name': '', 'age': 20, 'city': '河北'} {'first_name': '', 'last_name': '', 'age': 19, 'city': '山西'} {'first_name': '', 'last_name': '', 'age': 18, 'city': '河北'} --------------------------------------------------------------- 河北劉備現在20歲! 山西關羽現在19歲! 河北張飛現在18歲! #6-9 #創建一個名為favorite_places 的字典。 #在這個字典中,將三個人的名字用作鍵; #對于其中的每個人,都存儲他喜歡的1~3個地方。為讓這個練習更有趣些,可讓一些朋友指出他們喜歡的幾個地方。 #遍歷這個字典,并將其中每個人的名字及其喜歡的地方打印出來。 secnis_spot = {'張三' : ['莫斯科','多倫多'],'李四' : ['東京','希臘','新加坡'],'王五' : ['墨西哥','奧地利'], }for name,citys in secnis_spot.items():print(name.title() + "喜歡的地方是:")for city in citys:print("\t" + city.title())#輸出結果如下: 張三喜歡的地方是:莫斯科多倫多 李四喜歡的地方是:東京希臘新加坡 王五喜歡的地方是:墨西哥奧地利 # 6-11 # 創建一個名為cities 的字典,其中將三個城市名用作鍵; # 對于每座城市,都創建一個字典,并在其中包含該城市所屬的國家、 # 人口約數以及一個有關該城市的事實。#在表示每座城市的字典中,應包含country 、population 和fact 等鍵。 # 將每座城市的名字以及有關它們的信息都打印出來。 cities = {'北京': {'國家': '中國','人口': '2171萬','事實': '中國首都'},'墨爾本': {'國家': '澳大利亞','人口': '500萬','事實': '旅游城市'},'東京': {'國家': '日本','人口': '946萬','事實': '房價很貴'}, } for name, citys in cities.items():print(name + "的情況如下:")for n, city in citys.items():print("\t" + n + " : " + city)#輸出結果如下:

?

轉載于:https://www.cnblogs.com/a404790696/p/10975028.html

總結

以上是生活随笔為你收集整理的《Python编程从入门到实践》学习笔记6:字典的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。