今日大綱:python
1.什麼是字典git
字典是以key:value的形式來保存數據,用{}表示. 存儲的是key:value算法
2.字典的增刪改查(重點)服務器
(1) 添加
dic[新key] = 值多線程
setdefault()
(2)刪除
pop(key)app
del dict[key]dom
popitem()ide
clear()函數
(3)修改
dic[老key] = 新值
d1.update(d2) 把d2的鍵值對更新到d1中
(4)查詢
dic[key]
get(key, 值) #推薦用法
setdefault(key, value)
(5) 遍歷,字典是一個可迭代對象this
3.字典的相關操做
(1) keys() 獲取到全部的鍵的集合(高仿列表)
(2) values() 獲取到全部的值的集合
(3)items() 拿到全部的鍵值對 元組形式
(4)解構:
a,b=(1,2)
a,b=1,2
4.字典的嵌套
字典的嵌套. 字典套字典
5.集合(非重點),核心功能:去重複
本節主要內容:
1.字典的簡單介紹
2.字典的增刪改查及其餘操做
3.字典的遍歷
4.字典的嵌套
5.set集合
一.字典的簡單介紹
字典(dict)是python中惟⼀的⼀個映射類型.他是以{ }括起來的鍵值對組成. 在惟⼀的. 在保存的時候, 根據key來計算出⼀個內存地址. 而後將key-value保存這種算法被稱爲hash算法, 因此, 切記, 在dict中存儲的key-value中的key'必須若是你搞不懂什麼是可哈希, 暫時能夠這樣記, 能夠改變的都是不可哈希的, 那麼可哈希就一位這不可變,這個是 這個是爲了能準確的計算內存地址而規定的.
已知的可哈希(不可變)的數據類型: int, str, tuple, bool
不可哈希(可變)的數據類型: list, dict, set
語法 :
{key1: value1, key2: value2....}
注意: key必須是不可變(可哈希)的. value沒有要求.能夠保存任意類型的數據.
dic={}
print(type(dic)) #<class 'dict'>
(1)#查找,經過列表引入字典
lst=['周杰倫','林俊杰','蔡依林'] #lst[0]
總結:字典是自定義下標的列表
dic={'jay':'周杰倫','jj':'林俊杰','jolin':'蔡依林'}
print(dic['jay']) #查找 周杰倫
(2)修改
dic={'jay':'周杰倫','jj':'林俊杰','jolin':'蔡依林'}
dic['jay']='馬化騰' #修改鍵jay對應的值
print(dic) #結果{'jay': '馬化騰', 'jj': '林俊杰', 'jolin': '蔡依林'}
(3)應用,
在手機袋子的查找手機,經過標籤尋找
'''
字典的查找效率比較高
坑: a.字典存儲數據的時候是用hash值來存儲的,知道hash是個NB的算法就好了
b.算法不能變(python的),數據必須是不可變的(可哈希)
算法對應相同的值,對於結果
對'鍵'進行運算,計算出一個值來,下次再算,下次仍是這個值
'''
(4)
總結:
列表是可變的,不可哈希的
元組是不可變的,可哈希的
字典的鍵必須是可哈希的
print(hash(123)) #結果產生的hash值:123
print(hash('胡辣湯'))
print((1,2,3))
(5)
dic={'jay':'周杰倫','王力宏':['龍的傳人','惟一','改變本身'],['戰狼','戰狼2']:'武警'}
print(dic)
結果報錯:TypeError: unhashable type: 'list'
總結字典不能做爲"鍵
dict保存的數據不是按照咱們添加進去的順序保存的. 是按照hash表的順序不是連續的. 因此不能進⾏切片⼯做. 它只能經過key來獲取dict中的數據
二.字典的增刪改查及其餘操做
(1)
增長 dic[新鍵]=新值
dic[老鍵]=新值
dic={'意大利':'李雲龍','美國':'美國往事'}
dic['日本']='東京審判' #新key表示添加
dic['韓國']='釜山行'
dic['美國']="華爾街之狼" #更新
print(dic)
增長 setdefault(難點)
總結:
有添加的功能,若是key是存在的,不添加
流程:判斷你給的key是否在字典中存在了,若是已經存在了,則再也不新增,不存在,則添加
dic={'意大利':'李雲龍','美國':'美國往事'} dic.setdefault('印度') #只有鍵,值顯示 None print(dic) #結果:{'意大利': '李雲龍', '美國': '美國往事', '印度': None} dic.setdefault('印度','三傻大鬧寶萊塢') #即便是空值也不從新賦值 print(dic) #結果:{'意大利': '李雲龍', '美國': '美國往事', '印度': None} dic.setdefault('美國','三傻大鬧寶萊塢') print(dic) #結果:{'意大利': '李雲龍', '美國': '美國往事', '印度': None}
總結:即便一用setdefault開始建立沒有添加值,利用setdefault再次添加也不會更新新的值.
(2)刪除 pop/popitem/del/clear
dic={'張藝謀':'紅高粱','李安':'斷背山','陳凱歌':'霸王別姬','郭德綱':'祖宗十九代'} 方法一 dic.pop('郭德綱') #重點 須要記住的 print(dic) #結果: {'張藝謀': '紅高粱', '李安': '斷背山', '陳凱歌': '霸王別姬'} 方法二 dic.popitem() #如今python3.6是刪除最後一個,python3.5之前隨機刪除 ,在Python早期,字典的無序的 print(dic) #結果: {'張藝謀': '紅高粱', '李安': '斷背山'} 方法三 del dic['李安'] print(dic) #結果: {'張藝謀': '紅高粱'} dic.clear() #清空 print(dic) #結果: {}
(3)#修改 dic[新鍵]=新值 update
dic={'河南':'胡辣湯','開封':'灌湯包','武漢':'熱乾麪'} dic['河南']='燴麪' #總結:老key=新值 print(dic) #{'河南': '燴麪', '開封': '灌湯包', '武漢': '熱乾麪'} update dic1={'趙四':'劉小光','劉能':'王曉利','王木生':'範偉'} dic2={'趙四':'寶寶','劉能':'萌萌','皮校長':'皮長山'} dic1.update(dic2) print(dic1) #dic2把dic1更新 結果:{'趙四': '寶寶', '劉能': '萌萌', '王木生': '範偉', '皮校長': '皮長山'} print(dic2) #dic2不變 結果:{'趙四': '寶寶', '劉能': '萌萌', '皮校長': '皮長山'}
小結:update有相同的鍵,就把原來的值更新,可是不經常使用
(4)查找
dic1={'趙四':'劉小光','劉能':'王曉利','王木生':'範偉'} a. 直接使用key就能夠拿到value dic1={'趙四':'劉小光','劉能':'王曉利','王木生':'範偉'} print(dic1['趙四']) #結果:劉小光 print(dic1['趙四四']) #KeyError: '趙四四' key不存在 b. get(key) dic1={'趙四':'劉小光','劉能':'王曉利','王木生':'範偉'} print(dic1.get('劉能')) #結果:王曉利 print(dic1.get('劉能能')) #結果:None 當key不存在返回None print(dic1.get('劉能能','沒有這我的')) #結果:當key不存在,返回第二個參數,默認第二個參數是None #結果:沒有這我的 c. setdefault()
setdefault() 第一個功能是添加(當key不存在),第二個功能是查詢(根據你給的key查詢)
整個執行流程:判斷給的key是否存在,
若是key存在,就不執行新增流程,直接查詢出這個key對應的value
若是key不存在,先執行新增操做,再使用key把對應的value查詢出來
例一 dic1={'趙四':'劉小光','劉能':'王曉利','王木生':'範偉'} ret=dic1.setdefault('皮長山','皮校長') print(ret) #結果:皮校長 #先找再查 例二 dic1={'趙四':'劉小光','劉能':'王曉利','王木生':'範偉'} ret=dic1.setdefault('王木生','寶寶') print(ret) #結果:範偉 #先找再查
三.字典的遍歷
(1)for循環遍歷字典
A.
dic={'趙四':'劉小光','劉能':'王曉利','王木生':'範偉'}
直接用for循環
for key in dic: #直接循環字典拿到的是key,有key直接拿value
print(key)
print(dic[key])
結果:
趙四
劉小光
劉能
王曉利
王木生
範偉
B.
dic={'趙四':'劉曉光','劉能':'王曉利','王木生':'範偉'}
直接for循環
for key in dic: #直接循環字典拿到的是key,有key直接拿value
print(key,dic[key]) #打印出來的是:鍵和值
結果:
趙四 劉小光
劉能 王曉利
王木生 範偉
(2)
A:
不經常使用,上邊有一個更簡單的,直接用dic
dic={'趙四':'劉小光','劉能':'王曉利','王木生':'範偉'}
print(dic.keys()) #dict_keys(['趙四', '劉能', '王木生']) ,像列表,是山寨列表,高仿列表
for el in dic.keys(): #循環,能夠獲取到每個key
print(el)
結果:
趙四
劉能
王木生
B:
dic={'趙四':'劉小光','劉能':'王曉利','王木生':'範偉'}
當只須要值的時候
for v in dic.values():
print(v)
結果:
劉小光
王曉利
範偉
C:
dic={'趙四':'劉小光','劉能':'王曉利','王木生':'範偉'}
print(dic.values()) #結果:dict_values(['劉小光', '王曉利', '範偉'])
print(dic.keys()) #結果:dict_keys(['趙四', '劉能', '王木生'])
print(dic.items()) #結果:dict_items([('趙四', '劉小光'), ('劉能', '王曉利'), ('王木生', '範偉')])
D:
dic={'趙四':'劉小光','劉能':'王曉利','王木生':'範偉'}
for item in dic.items():
print(item) #元組類型
k=item[0]
v=item[1]
print(k,v)
結果:
('趙四', '劉小光')
趙四 劉小光
('劉能', '王曉利')
劉能 王曉利
('王木生', '範偉')
王木生 範偉
E:
dic={'趙四':'劉小光','劉能':'王曉利','王木生':'範偉'}
for k,v in dic.items():
print(k,v)
結果:
趙四 劉小光
劉能 王曉利
王木生 範偉
(3)
a,b=1,2 #解構,解包
print(a)
print(b)
c=1,2,3
print(c) #1,2,3
print(type(c)) #<class 'tuple'>
d=(1,2,3) #沒有解包,直接建立一個元組
print(d)
支持解包的類型: list,tuple
(4)
遍歷字典的最簡單的方法(最高效的方法)
#for k,v in dic.items():
dic={'週五':'等着放假','週六':'放假','週日':'等着上課'}
a.直接用for循環遍歷字典的key
for k in dic: #k直接拿到的是key
print(k,dic[k])
b.使用dic.items() 解構能夠直接拿到k,v,也就是鍵和值
for k,v in dic.items():
print(k,v)
四.字典的嵌套
題目
wf={ 'name':'汪峯', 'age':52, 'hobby':['唱歌','上頭條','穿皮庫'], 'wife':{ 'name':'章子怡', 'age':49, 'hobby':['演戲','上電視','當導師'], 'tishen':{ 'name':'萌萌', 'age':28 }, 'zhuli':{ 'name':'磊磊', 'age':20 } }, 'zhuli':{ 'name':'寶寶', 'age':23, 'hobby':['抽菸','喝酒','燙頭'] }, 'children':[{'name':'汪老大'},{'name':'汪老二'}] }
練習題:
汪峯第二個孩子的年齡 wf['children'][1]['age']=2 print(wf) (1)汪峯助理的名字 print(wf['zhuli']['name']) (2)汪峯老婆的替身的名字 print(wf['wife']['tishen']['name']) (3)汪峯老婆的第二個愛好 print(wf['wife']['hobby'][1]) (4)汪峯助理的第三個愛好 print(wf['zhuli']['hobby'][2]) (5)給汪峯的助理+10歲 #(兩種方法) wf['zhuli']['age']=wf['zhuli']['age']+10 wf['zhuli']['age']=33 print(wf) (6)汪峯的老婆添加一個愛好('導戲) wf['wife']['hobby'].append('導戲') wf['wife']['hobby'].extend('導戲') #錯誤方法,這個是迭代添加 '當導師', '導戲', '導', '戲' print(wf) (7)刪除汪峯助理的'抽菸'愛好 (三種刪除方法) wf['zhuli']['hobby'].remove('抽菸') wf['zhuli']['hobby'].pop(0) #注意pop指定的是索引 del wf['zhuli']['hobby'][0] print(wf)
五.set集合
(1)
運行以後,是無序的
s={'周潤發','大潤發','王潤髮','周潤發'} #去重,留下不重複的
print(s)
(2)把列表轉化成集合 x 轉化成y類型 y()
惟一能用到的點,去重複
lst = ["麻將", "牌九", "骰子", "撲克", "虎機", "骰子", "撲克", "虎機", "撲克", "虎機", "撲克", "虎機"]
s=set(lst)
print(s) #把集合編繪列表
lst=list(s)
print(lst) #順序是亂的,可是對比它的優勢,是能夠忽略的
(3)計算機中麻煩的事情
1.去重 2.排序
(4)
瞭解 集合的增刪改查就行,不須要記憶 能夠用石墨文檔//印象筆記 A.增長 s={'小米','華爲','vivo'} s.add('oppo') #非要記,就記這個就好了 print(s) s.update('冬瓜') #迭代添加 print(s) B.刪 s={'小米','華爲','vivo'} ret=s.pop() #隨機刪除一個 print(s) #剩下的集合 print(ret) #刪除的元素 s.remove('小米') #指定刪除 print(s) 重點記憶:集合和字典,都是沒有索引和切片的,由於二者內部都是亂序的 s.clear() #清空 print(s) C.改 修改,先刪除,再添加 把小米改爲J羅 s={'小米','華爲','vivo'} s.remove('小米') s.add('J羅') print(s) for el in s: print(el) #迭代打印
(5)
數學運算
s1={1,2,3}
s2={1,2,4}
交集 &與字符
print(s1&s2)
print(s1.intersection(s2))
並集
print(s1|s2)
print(s1.union(s2))
差集
print(s1-s2) #s1中特有的內容
print(s1.difference(s2))
反交集
print(s1^s2) #兩個集合中特有的內容
print(s1.symmetric_difference(s2))
反交集是什麼?
例如:集合A={0,1,2,3},集合B={2,3}
那麼集合A和集合B的交集就是{2,3}
集合A和集合B的反交集就是{0,1}
(6)
集合自己是可變的數據類型,不可哈希
集合套集合->不能相互嵌套的
集合中的元素必須可哈希(不可變的)
s={123}
#<冰雪奇緣>
若是非要集合套集合
s=frozenset({'哈哈','呵呵'}) #不可變的數據類型(集合)
print(s)
驗證
for el in s:
print(el)
(7)
關於set集合做業:寫一個彩票開獎(36選7)
何時夠7個就結束
怎麼產生隨機數
#題目解法答案:
from random import randint l=set() # print(type(l)) #查看l的數據類型 for i in range(100): k=randint(1,36) #randint是在一個自定義範圍內產生隨機整數, # print(randint(1,36)) l.add(k) if len(l)==7: #生成7個不重複的代碼3 break print(l,i) #最後顯示,添加集合的結果,一共隨機了幾個數
(8)
預習
深淺拷貝
小數據池;是幹嗎的,小數據池存在的意義
文件操做(帶來的做業會不少)
開講-函數:
第一次考試:從開始到文件操做
下週:函數
f(x)=x+1
f(1)=2
難點:多線程,多線程以後是一馬平川
不僅是多線程,還有多進程,單線程,單進程,協程等等
今日做業
# 1,有以下變量(tu是個元祖),請實現要求的功能
# tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11, 22, 33)}, 44])
# a.講述元祖的特性
'''
不可更改的數據類型,有序
'''
# b.請問tu變量中的第一個元素, "alex",是否可被修改?
'''
tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11, 22, 33)}, 44])
tu[0]=1
print(tu)
#TypeError: 'tuple' object does not support item assignment
上邊案例說明,tu是不可變數據類型,第一層元素的第一個元素是不能夠更改的
#字符串不可變
#元組第一層不可變
'''
# c.請問tu變量中的"k2"
# 對應的值是什麼類型?是否能夠被修改?若是能夠,請在其中添加一個元素"Seven"
'''
(1)對應的是列表類型(list)
(2)是能夠被修改的
(3)
tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11, 22, 33)}, 44])
tu[1][2]['k2'].append('Seven')
print(tu)
'''
# d.請問tu變量中的"k3"對應的值是什麼類型?是否能夠被修改?若是能夠,請在其中添加一個元素"Seven"
'''
(1)元組
(2)不能夠被修改
(3)#強行轉也是能夠的
tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11, 22, 33)}, 44])
tu[1][2]['k3'].append('Seven')
print(tu)
#結果報錯:AttributeError: 'tuple' object has no attribute 'append'
'''
2, 字典dic, dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
# a.請循環輸出全部的key ''' dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} #方法一 # for i in dic: # print(i) #方法二: # for i in dic.keys(): # print(i) ''' # b.請循環輸出全部的value ''' dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} # 方法一 for i in dic: print(dic[i]) # 方法二: for i in dic.keys(): print(dic[i]) ''' # c.請循環輸出全部的key和value ''' #方法一: dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} for i in dic: print(i,dic[i]) #方法二: for k,v in dic.items(): print(k,v) ''' # d.請在字典中添加一個鍵值對,"k4": "v4",輸出添加後的字典 ''' dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} # 方法一: # dic['k4']='v4' # print(dic) #方法二 # dic.setdefault('k4','v4') # print(dic) ''' # e.請在修改字典中"k1"對應的值爲"alex",輸出修改後的字典 ''' #方法一: dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} dic['k1']='alex' print(dic) # 方法二 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} dic1={'k1':'alex'} dic.update(dic1) print(dic) ''' # f.請在k3對應的值中追加一個元素44,輸出修改後的字典 ''' dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} dic['k3'].append(44) print(dic) ''' # g.請在k3對應的值的第 1 個位置插入個元素 18,輸出修改後的字典 ''' dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]} # dic['k3'].insert(1,'18') dic['k3'].insert(0,'18') print(dic)
3,
av_catalog = { "歐美": { "www.youporn.com": ["不少免費的,世界最大的", "質量通常"], "www.pornhub.com": ["不少免費的,也很大", "質量比yourporn高點"], "letmedothistoyou.com": ["可能是自拍,高質量圖片不少", "資源很少,更新慢"], "x-art.com": ["質量很高,真的很高", "所有收費,屌絲請繞過"] }, "日韓": { "tokyo-hot": ["質量怎樣不清楚,我的已經不喜歡日韓範了", "verygood"] }, "大陸": { "1024": ["所有免費,真好,好人一輩子平安", "服務器在國外,慢"] } }
# a, 給此["不少免費的,世界最大的", "質量通常"]列表第二個位置插入一個元素:'量很大'。 #注意這個插入的方法的應用 av_catalog['歐美']["www.youporn.com"].insert(1,'量很大') print(av_catalog) # b, 將此["質量很高,真的很高", "所有收費,屌絲請繞過"]列表的"所有收費,屌絲請繞過"刪除。 #方法:del remove pop #方法一 # av_catalog['歐美']["x-art.com"].pop() # print(av_catalog) #方法二: # del av_catalog['歐美']["x-art.com"][1] # print(av_catalog) # 方法三: # av_catalog['歐美']["x-art.com"].pop(1) # print(av_catalog) #方法四: # av_catalog['歐美']["x-art.com"].remove("所有收費,屌絲請繞過") # print(av_catalog) ''' # c, 在此["質量很高,真的很高", "所有收費,屌絲請繞過"]列表中添加"金老闆最喜歡這個"。 ''' #方法一 # av_catalog['歐美']['x-art.com'].append('金老闆最喜歡這個') # print(av_catalog) #方法二 # av_catalog['歐美']['x-art.com'].insert(-1,'金老闆最喜歡這個') # print(av_catalog) ''' # d, 將此["質量怎樣不清楚,我的已經不喜歡日韓範了", "verygood"]列表的"verygood"所有變成大寫。 ''' #方法一 # av_catalog['日韓']['tokyo-hot'][-1]=av_catalog['日韓']['tokyo-hot'][-1].upper() # print(av_catalog) #方法二 # av_catalog['日韓']['tokyo-hot'][-1]=av_catalog['日韓']['tokyo-hot'][-1].swapcase() # print(av_catalog) # 方法三 # av_catalog['日韓']['tokyo-hot'][-1]='VERYGOOD' # print(av_catalog) #方法四 # av_catalog['日韓']['tokyo-hot'][1]='VERYGOOD' # print(av_catalog) ''' # e, 給'大陸'對應的字典添加一個鍵值對 '1048': ['一天就封了'] ''' #方法一 # av_catalog['大陸']['1048']='一天就封了' # print(av_catalog) # 方法二 # av_catalog['大陸'].setdefault('1048','一天就封了') # print(av_catalog) ''' # f, 刪除此 "letmedothistoyou.com": ["可能是自拍,高質量圖片不少", "資源很少,更新慢"]鍵值對。 ''' #pop和del 能夠指定刪除字典 # 方法一 # av_catalog['歐美'].pop('letmedothistoyou.com') # print(av_catalog) #方法二 # del av_catalog['歐美']['letmedothistoyou.com'] # print(av_catalog) ''' # g, 給此["所有免費,真好,好人一輩子平安", "服務器在國外,慢"]列表的第一個元素,加上一句話:'能夠爬下來' ''' #方法一;在最前面添加一個元素"能夠爬下來" # av_catalog['大陸']['1024'].insert(0,'能夠爬下來') # print(av_catalog) #方法二1:#在第一個元素的後面添加 # av_catalog['大陸']['1024'][0]=av_catalog['大陸']['1024'][0]+'能夠爬下來' # print(av_catalog) #方法二2: av_catalog['大陸']['1024'][0]='所有免費,真好,好人一輩子平安能夠爬下來' print(av_catalog)
四、有字符串
"k:1|k1:2|k2:3|k3:4"
處理成字典
{'k': 1, 'k1': 2....}(升級題)
#方法一: # dic={} # s="k:1|k1:2|k2:3|k3:4" # s=s.split("|") # print(s) # for i in s: # a,b=i.split(':') # dic[a]=int(b) # print(dic) #方法二 # dic={} # s="k:1|k1:2|k2:3|k3:4" # s=s.split("|") # print(s) # for i in s: # a=i.split(':') # dic[a[0]]=int(a[1]) # print(dic)
五、元素分類
有以下值li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90],將全部大於66的值保存至字典的第一個key中,將小於66
的值保存至第二個key的值中。
即: {'k1': 大於66的全部值列表, 'k2': 小於66的全部值列表}
方法一
s={'k1':[],'k2':[]} li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90] for i in li: if i>66: s['k1'].append(i) elif i<66: s['k2'].append(i) else: continue print(s)
方法二
s={} li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90] for i in li: if i>66: s.setdefault('k1',[]).append(i) elif i<66: s.setdefault('k2',[]).append(i) else: continue print(s)
六、輸出商品列表,用戶輸入序號,顯示用戶選中的商品(升級題)
商品列表:
goods = [{"name": "電腦", "price": 1999},
{"name": "鼠標", "price": 10},
{"name": "遊艇", "price": 20},
{"name": "美女", "price": 998}, ]
要求:
1:頁面顯示
序號 + 商品名稱 + 商品價格,如:
1 電腦 1999
2 鼠標 10
…
2:用戶輸入選擇的商品序號,而後打印商品名稱及商品價格
3:若是用戶輸入的商品序號有誤,則提示輸入有誤,並從新輸入。
4:用戶輸入Q或者q,退出程序。
goods = [{"name": "電腦", "price": 1999}, {"name": "鼠標", "price": 10}, {"name": "遊艇", "price": 20}, {"name": "美女", "price": 998}, ] for i in range(len(goods)): print(i+1,goods[i]['name'],goods[i]['price']) while 1: content = input("輸入Q退出,或請輸入選擇的商品序號:").strip() if content.upper()=='Q': break elif content.isdigit(): if int(content) in range(1,len(goods)+1): print(int(content),goods[int(content)-1]['name'],goods[int(content)-1]['price']) else: print('輸入錯誤,請從新輸入') else: print('輸入錯誤,請從新輸入')
方法二:運用三元運算符
goods = [{"name": "電腦", "price": 1999}, {"name": "鼠標", "price": 10}, {"name": "遊艇", "price": 20}, {"name": "美女", "price": 998}, ] for i in range(len(goods)): print(i+1,goods[i]['name'],goods[i]['price']) while 1: content = input("輸入Q退出,或請輸入選擇的商品序號:").strip() if content.upper()=='Q': break elif content.isdigit(): print(int(content),goods[int(content)-1]['name'],goods[int(content)-1]['price'] if int(content) in range(1,len(goods)+1) else print('輸入錯誤,請從新輸入')) else: print('輸入錯誤,請從新輸入')
補充:字典沒有就顯示後面的這條數據