在本篇博客中,你將能學習到可以將相關信息關聯起來的Python字典,以及一些對字典的操做。python
在講正事以前,不能忘了上一篇博客佈置下來的做業:編程
執行如下操做以建立一個程序,該程序模擬網站如何確保每一個人都有惟一的用戶名。
•列出包含五個或更多用戶名的列表current_users;再列出包含五個新用戶名的列表new_users,
確保一個或兩個新用戶名也在當前用戶列表中。
•循環瀏覽新用戶列表,查看每一個新用戶名是否已被使用。若是有,請打印一條消息,說明此人須要輸入新的用戶名。
若是沒有使用用戶名,請打印一條消息,說明用戶名可用。
•確保你的比較不區分大小寫。若是使用了「john」,則不該接受「JOHN」
答案以下:app
current_users=["Master","paopao","mary","Alice","jack"] new_users=["mack","tom","Mary","alice","james"] current_users_1=[] for oldname in current_users: oldname=oldname.lower() current_users_1.append(oldname) for newname in new_users: if newname.lower() in current_users_1: print(newname,"你好,你註冊的名字已被佔用,請從新註冊。") else: print(newname,"你好,你註冊的名字可用。")
輸出結果:學習
mack 你好,你註冊的名字可用。
tom 你好,你註冊的名字可用。
Mary 你好,你註冊的名字已被佔用,請從新註冊。
alice 你好,你註冊的名字已被佔用,請從新註冊。
james 你好,你註冊的名字可用優化
若是有對本段代碼不懂的同窗,能夠親自來問我。固然,有更好優化代碼方案的,請務必告訴我。網站
一個簡單的字典示例 spa
student={"name":"master","age":18} print(student["name"]) print(student["age"])
字典student存儲了一個學生的名字和年齡,使用print()來打印結果,會看見:code
master
18blog
字典的概念索引
在python中,字典是一系列的鍵-值對,每個鍵都與一個值相對應,使用的符號是大括號{ }。
你可使用鍵來訪問與之相對應的值,與鍵相關聯的值能夠是數字、字符串、列表乃至字典。
字典dict的公式:{key1:value1,key2:value2,...}
鍵和值之間用冒號分隔,鍵-值對與鍵值對用逗號隔開。
建立字典並學會如何訪問值
咱們來創造一個包含更多學生信息的字典:
student={ "name":"master", "age":18, "sex":"男", "class":"軟件一班", "teacher":"Mr.Lee" }
咱們知道,去使用鍵來訪問值:
#獲取學生的名字 print(student["name"]) #獲取學生的性別 print(student["sex"]) #獲取學生的班級 print(student["class"])
能夠看到結果以下所示:
master
男
軟件一班
添加新的鍵-值對和修改鍵的值
首先複習一下列表若是想要添加新的元素的時候,有哪幾種方法:
list_1.append() :末尾追加一個新的元素
list_1.insert():某索引位置加入新的元素
小提示:爲何不直接命名list?--->關鍵詞不能用來作變量名
字典添加新的鍵-值對相對於列表是很是方便的:
student["school"]="哈佛大學" student["address"]="熱河路"
而後咱們print(student)來看看字典發生了怎麼樣的變化:
{ 'name': 'master', 'age': 18, 'sex': '男', 'class': '軟件一班', 'teacher': 'Mr.Lee', 'school': '哈佛大學', 'address': '熱河路' }
是否是很是快速多了,只須要給字典的索引上創一個新的鍵,等於號後面寫上所對應的值,就能夠產生新的鍵-值對了。
那麼實際上我這個student字典很是不貼實際的,存在吹牛逼的成分,master考上哈佛大學,有那麼牛逼嗎?
那麼如何修改字典裏面的值呢?
student["age"]=20 student["school"]="野雞大學" print(student)
咱們能夠發現,字典修改值和列表修改元素的方法都同樣,給指定索引從新定義數據就能夠完成修改:
{ 'name': 'master', 'age': 20, 'sex': '男', 'class': '軟件一班', 'teacher': 'Mr.Lee', 'school': '野雞大學', 'address': '熱河路' }
如今這個student字典裏的信息是否是看上去順眼多了?
刪除鍵-值對
咱們在上面使用student字典的過程當中,鍵"teacher":值"Mr.Lee"這一對並無用過。
因此,咱們就考慮刪除掉這一對,刪除的方法使用del:
del student["teacher"] print(student)
刪除的方法,字典和列表也同樣,用del刪除指定的鍵,就能刪除掉鍵-值對,再也不出現。
{ 'name': 'master', 'age': 20, 'sex': '男', 'class': '軟件一班', 'school': '野雞大學', 'address': '熱河路' }
使用for遍歷字典
①遍歷全部的鍵-值對
首先有student字典:
{
'name': 'master', 'age': 20, 'sex': '男', 'class': '軟件一班', 'school': '野雞大學', 'address': '熱河路' }
如何將這些數據更爲直觀的鍵-值打印在窗口上:
for key,value in student.items(): print("鍵:",key) print("值:",value) print()
要注意的是,字典並不能直接與for相結合使用:
這時,items()應運而生,它的做用是把字典轉換爲列表形式,鍵-值對轉換爲元組。
dict_items([('name', 'master'), ('age', 20), ('sex', '男'), ('class', '軟件一班'), ('school', '野雞大學'), ('address', '熱河路')])
輸出結果:
鍵: name
值: master
鍵: age
值: 20
鍵: sex
值: 男
鍵: class
值: 軟件一班
鍵: school
值: 野雞大學
鍵: address
值: 熱河路
②遍歷字典中的全部鍵
在這兒,咱們要從新定義一個字典,來幫助你完成更好理解這個小節:
一個學生字典,學生名字爲鍵,年齡爲值
student={ "張三":18, "李四":20, "王五":22, "馬六":23 }
如今,我要遍歷出這個字典的全部人的名字:
for name in student.keys(): print(name)
keys()方法極爲有用,也不須要通過一些複雜的轉換列表操做,能夠直接提取出全部的鍵。
輸出結果:
張三
李四
王五
馬六
③遍歷字典中的全部值
和上面方法同樣,直接使用values方法提取全部的值。
for name in student.values(): print(name)
輸出結果:
18
20
22
23
字典的嵌套用法
①列表存儲字典元素
咱們建立三個學生信息的字典,含有姓名和年齡:
student1={"name":"張三","age":18} student2={"name":"李四","age":19} student3={"name":"王五","age":20}
而後,咱們能夠把這三個字典,存儲到列表裏做爲元素:
student_list=[student1,student2,student3] print(student_list)
輸出結果:
[{'name': '張三', 'age': 18}, {'name': '李四', 'age': 19}, {'name': '王五', 'age': 20}]
②字典存儲列表值
我在上面提過一句話:
你可使用鍵來訪問與之相對應的值,與鍵相關聯的值能夠是數字、字符串、列表乃至字典。
在上面咱們已經見識了數字和字符串類型做爲值,如今來看一看列表做爲值的狀況:
在上面中,咱們認識了張三,李四和王五,如今調查他們的愛好,獲得下面的結果
張三的愛好:編程,游泳和打遊戲
李四的愛好:編程,看書和踢足球
王五的愛好:撩妹,喝酒和打遊戲
而後,他們都是來自軟件一班,就用appclass_one做爲字典變量,
他們的名字做爲鍵,他們的愛好做爲值並用列表的形式:
appclass_one={ "張三":["編程","游泳","打遊戲"], "李四":["編程","看書","踢足球"], "王五":["撩妹","喝酒","打遊戲"] }
如今,咱們將這個字典數據以更爲直觀的形式出如今打印窗口:
for people,favourites in appclass_one.items(): print(people+"的愛好以下:") for favourite in favourites: print("\t",favourite) print()
先來看看輸出結果:
張三的愛好以下:
編程
游泳
打遊戲
李四的愛好以下:
編程
看書
踢足球
王五的愛好以下:
撩妹
喝酒
打遊戲
那麼要考慮到一些零基礎的同窗,可能會一時沒法理解代碼的原理,我能夠給出大概的解釋以下:
第一行確定是先提取出鍵和值出來,items()是轉換成列表形式,
縮進以後來到第二行,打印出人名的愛好消息,這時候若是來到第三行直接打印,
第三行直接是一行列表形式的愛好,確定不夠直觀,並且我不想要看見列表的符號,
因此再對這個列表進行提取每一個元素處理,把每一個元素但獨佔一行,
「\t」是橫向製表符,也就是製造橫向空格,讓總體效果更爲直觀。
最後一行的print()屬於換行,而後繼續訪問字典裏第二我的名……
③字典存儲字典值
字典的值也能夠是字典的形式,好比定義一個班級字典,裏面有不少學生的信息:
appclass_one={ "student1":{"name":"張三","age":18}, "student2":{"name":"李四","age":19}, "student3":{"name":"王五","age":20} }
若是想像上面同樣出題目的話,其實也不用浪費筆墨,多用一次items()方法便可。
做業來襲:
建立一個名爲cities的字典,其中將三個城市名用做鍵,對於每一個城市的所屬省份、人口數、是否爲省會等等建立一個字典做爲值。
而後以更爲直觀的形式打印出這些信息在輸出窗口。
恭喜你!字典在你面前成功地作了弟弟,接下來的一篇博客你將接觸到while循環和input獲取用戶輸入。
建議再次複習往期博客增強複習!