python列表及for循環要注意的知識點


列表可以嵌套不同的數據類型,如下是在列表中嵌套字典

a = [{"name":'zhouziqi','contact':17806762943},{"name":'zhouyu','contact':13246910612}]
for i in a:
    print(i)

wKiom1m9MTfhOhXeAAARW93kFck588.png

我們可以用for循環去顯示每個字典 

如果想找一個名字爲zhouziqi的信息,思路是這樣的,讓a列表中的每個字典一個個的賦值給i,這樣i就是字典,如果想要找到字典中的'name'就可以用i['name']

a = [{"name":'zhouziqi','contact':17806762943},{"name":'zhouyu','contact':13246910612}]
for i in a:
    print(i['name'])

這個在以後會經常用到哦

下面我們說一個for循環要注意的小點,直接看例子:

a = [{"name":'zhouziqi','contact':17806762943},{"name":'zhouyu','contact':13246910612}]
name = input("Please input name:")
for i in a: #把a列表中的字典一個個的賦予給變量i
    if name == i['name']: #判斷用戶輸入name的值是否等於在i字典中key爲name的值
        print("the name is exist") #如果存在就輸出正確信息
    else:
        print("None") #這是不正確的信息

從上面代碼中看不出任何的毛病,你可以執行一下:

wKiom1m9NJPRKBCqAAAMSbizaQc023.png

爲什麼明明我們輸入了zhouziqi這個名字是存在的,卻又說這個name存在,又說這個名字不存在呢?

因爲我們的a列表裏面有兩個字典對吧,當我們執行上面代碼的第二行的時候,也就是讓用戶輸入一個值,我們輸入zhouziqi,這時候name就等於zhouziqi,進入第三行代碼,i的第一個值就是字典{"name":'zhouziqi','contact':17806762943},然後進行第四行代碼,判斷name的值是否等於{"name":'zhouziqi','contact':17806762943}字典中key爲name的值,結果zhouziqi是等於zhouziqi的,這時候等式成立了,第五行代碼,打印正確信息,這就出現了the name is exist,那爲什麼還有個None的錯誤信息打印出來呢,因爲a裏面是兩個字典,剛剛我們{"name":'zhouziqi','contact':17806762943},現在就用第二個字典{"name":'zhouyu','contact':13246910612},發現不成立就打印出錯誤信息。這和我們想的不一樣呀,那麼我們能不能讓它判斷有這個名字了就自己break出來呢。這樣還是有問題的哦,你看看以下代碼

a = [{"name":'zhouziqi','contact':17806762943},{"name":'zhouyu','contact':13246910612}]
name = input("Please input name:")
for i in a:
    if name == i['name']:
        print("the name is exist")
        break
    else:
        print("None")

我們執行一下,這樣輸入zhouyu

wKiom1m9N3aCXZE2AAAPWz0I7_4028.png

爲什麼會出現None,因爲和上面的一樣,i的第一個值是{"name":'zhouziqi','contact':17806762943}判斷出name(也就是zhouyu)不等於i['name'](也就是zhouziqi)所以就打印出None,然後第二個字典是{"name":'zhouyu','contact':13246910612},這才匹配成功輸出the name is exist。那我們應該怎麼辦呢?

因爲不管怎麼樣,都會出現None,那麼我們能不能不要這個else呢,答案是確定的,可以不要這個else,然後在外面定義一個值爲false_number默認值爲0,然後在for循環裏面,如果我們找到用戶輸入的name就更改false_number的值爲1,然後用break跳出循環,在外面我們再去判斷false_number是否爲1,如果是說明這個name就存在於數組中的字典中,否則就不存在

a = [{"name":'zhouziqi','contact':17806762943},{"name":'zhouyu','contact':13246910612}]
name = input("Please input name:")
false_number = 0
for i in a:
    if name == i['name']:

        false_number = 1
    if false_number == 1:
        break
if false_number == 1:
    print("the name is exist")
else:
    print("None")


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章