在等待日式咖哩餐點的空檔,Jason 帶著 Meiko 思考,一間咖哩店是如何把一盤美味的咖哩飯做出來,並且正確地端到客人眼前!Licensed by Adobe Stock
這天 Jason 和 Meiko 坐在一間日式咖哩店,飢腸轆轆的等著他們的餐點。看著牆上的海報,道地的日式醬汁融合著晶瑩剔透的白米,看起來就非常可口。
Meiko 看了一下周圍等餐的顧客,接著說:「Jason,平常我們吃咖哩飯好像覺得很正常不過,但他們是怎麼做出餐點,再把餐點送到每個人的?」
Jason:「那我考你從點餐到做菜到送餐,中間的過程中,需要哪些資訊,才有辦法讓服務人員把餐點送到你的手上?」
Meiko:「像我這次點辛口(辣味)牛肉咖喱套餐,你點的是甘口(甜味)豬排咖哩套餐,所以第一步應該是這兩個套餐訂單,要從服務生傳給廚房的廚師對吧?」
Jason:「目前正確,那餐點訂單到了廚房會發生什麼事?」
Meiko:「廚房裡的大廚接到訂單之後,要看著訂單出餐。辛口牛肉咖喱套餐,我猜會有牛肉塊、辛口醬汁、白飯,套餐還會有附湯,我選的是味增柴魚湯。至於你的甘口豬排咖哩套餐會需要炸豬排、甘口醬汁和白飯,然後你選的味增豆腐湯。所以他們至少要弄清楚餐點內容!」
Jason:「那當廚房把餐點準備好要出餐的時候,該怎麼處理?」
Meiko:「出餐的時候,服務生要知道這個套餐是要送給哪一張桌子的客人,所以要有桌號的資訊。不賴吧?我說的應該沒有漏掉什麼?」
Jason:「餐點本身應該沒問題,不過還差了這是『第幾號』訂單的資訊,主要是用來計算出餐的順序,不然你看現場那麼多客人,服務生又要怎麼知道要先送哪一桌的餐點?」
Meiko:「對耶,現在許多速食店有叫號的功能,依序排列下來,才不會亂了手腳,先來的人應該餐點會先到才是。可是我們講了那麼多,你還是沒有回答我該怎麼進行耶?」
Jason:「其實你剛在思考從點餐到送餐的過程,就講了很多重要的資訊,只不過我們可以用一個有結構性的方式來儲存這些資料。
order = {
'orderId':52, #點單編號
'table':10, #桌號
'content':'辛口牛肉咖喱', #餐點名稱
'ingredient':['牛肉','醬汁','白飯'], #餐點內容物
'set':1, #套餐與否
'taste':'辛口', #口味
'soup':'味增柴魚湯' #套餐湯品
}
print (order)
Jason:「你看order
這個變數就代表了一個dictionary
,裡面包含了你點的餐點,包含了這個餐點的訂單編號、桌次、餐點內容、餐點成份、是否為套餐、口味、附湯是哪一種。如果你想要知道這個訂單裡面的餐點名稱你就可以用 order['content']
其中的'content'
這個key
對應的value
就是 '辛口牛肉咖喱',表示這個訂單的餐點名稱。」
print (order['content'])
Meiko:「這樣蠻直覺的耶,找到對應的訂單之後,在中括號內輸入 key 就可以得到對應的餐點名稱。」
Jason:「再給你看個例子,如果我們用order['taste']
則會印出『辛口』!」
print (order['taste'])
Meiko:「Okay 那我大概知道怎麼用字典了!」
Jason:「字典真的是蠻好用的,你在寫 Python 的時候,可以用{}
兩個大括號或是使用內建函數dict ()
來建立字典。剛剛我們只建立了一個訂單,我們接下來如果把我們兩個餐點的訂單都建立起來,就會變成這個樣子。
order_1 = {
'orderId':52, #點單編號
'table':10, #桌號
'content':'辛口牛肉咖喱', #餐點名稱
'ingredient':['牛肉','醬汁','白飯'], #餐點內容物
'set':1, #套餐與否
'taste':'辛口', #口味
'soup':'味增柴魚湯' #套餐湯品
}
order_2 = {
'orderId':53, #點單編號
'table':10, #桌號
'content':'甘口豬排咖喱', #餐點名稱
'ingredient':['豬排','醬汁','白飯'], #餐點內容物
'set':1, #套餐與否
'taste':'甘口', #口味
'soup':'味增豆腐湯' #套餐湯品
}
print (order_1['content']) #執行後會得到 辛口牛肉咖喱
print (order_2['taste']) #執行後會得到 甘口
Jason:「你看,我們在最下面分別用print (order_1[‘content’]
和print (order_2[‘taste])
印出餐點名稱『辛口牛肉咖喱』和口味『辛口』。」
Meiko:「啊,我剛才看到菜單裡面有單點炸雞耶,我如果想加點的話要怎麼放到order_1
裡面?」
Jason:「單點可以把他叫做配菜,用sides
代表,在dictionary
裡面加入 key 就好像直接設定一個變數的數值就可以了!
order_1['sides'] = "炸雞"
你看,單點『'炸雞'』,就被加到order_1
的最後一個元素,sides
裡面。」
Meiko:「啊,稍等,我發現菜單裡面還有清酒和天婦羅耶,Jason,不然你把清酒和天婦羅加到你的菜單裡面好了。」
Jason :「厚,你真的是食慾大開耶!」
Meiko:「沒辦法,吃個咖哩還思考了這麼多問題,一下就餓了!哈哈」
我大寶寶~拉,今天還沒把所有的dictionary
內容講完,但大寶寶已經肚子餓了!(啊!這不是重點),大家有沒有發現dictionary
是一種非常彈性的紀錄資料方式呀?可以用key
和value
的方式儲存資料,這也是最近在非關聯性資料庫 NoSQL 的重要基礎唷!(常見的資料庫有兩種,一種是關聯性的資料庫,一種是非關聯性的資料庫,但今天先不跟大家提這些,重點放在我們要在 Python 裡面如何儲存資料)因為網路的資料都是接近dictionary
的形式(JSON),所以請大家要熟悉dictionary
的用法唷!今天大寶寶從自己最喜歡的日式咖哩飯跟大家介紹dictionary
,像這樣從自己關注的事情開始學程式,才能學得又快又好唷!
歡迎登入留言跟我分享你的想法唷!(登入不麻煩,點一下 FB 登入就可以留言了!)
1.喜歡這樣方式學 Python 的朋友請留言『+1』
2.如果前面的內容忘記了,趕快看一下大寶寶這一系列的看對話學 Python 資料分析,用情境故事帶你入門的列表!就能夠繼續 Happy Coding 囉!