iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
0
AI & Data

看對話學 Python 資料分析,用情境故事帶你入門系列 第 12

Day-12 日式咖哩店的資訊對話,活用字典 dictionary 儲存資料(上)


在等待日式咖哩餐點的空檔,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是一種非常彈性的紀錄資料方式呀?可以用keyvalue的方式儲存資料,這也是最近在非關聯性資料庫 NoSQL 的重要基礎唷!(常見的資料庫有兩種,一種是關聯性的資料庫,一種是非關聯性的資料庫,但今天先不跟大家提這些,重點放在我們要在 Python 裡面如何儲存資料)因為網路的資料都是接近dictionary的形式(JSON),所以請大家要熟悉dictionary的用法唷!今天大寶寶從自己最喜歡的日式咖哩飯跟大家介紹dictionary,像這樣從自己關注的事情開始學程式,才能學得又快又好唷!

給大寶寶留言、分享、鼓勵

歡迎登入留言跟我分享你的想法唷!(登入不麻煩,點一下 FB 登入就可以留言了!)

1.喜歡這樣方式學 Python 的朋友請留言『+1』
2.如果前面的內容忘記了,趕快看一下大寶寶這一系列的看對話學 Python 資料分析,用情境故事帶你入門的列表!就能夠繼續 Happy Coding 囉!


上一篇
Day-11 蘋果橘子不一樣!了解數值資料型態(下)
下一篇
Day-13 日式咖哩店的資訊對話,活用字典 dictionary 儲存資料(中)
系列文
看對話學 Python 資料分析,用情境故事帶你入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言