Makzan
Makzan

我管理世界職業技能競賽之網站技術項目、舉辦本地設計與開發賽事、開課分享技術心得。一個用網頁來表達自己的作家。

Python 入門速成(二)dict 字典概念篇

列表裝著多個字典的結構組合,在現實中有很大的應用空間。我們可以用另一種視覺來想像這種結構。試想像你現在使用 Excel 等試算表軟件來儲存客戶資訊。通常我們會使用類似以下的結構來儲存,每行為一筆記錄,每欄為一項記錄的屬性。

上星期介紹了 Python 入門之變量名字及列表。我們學到列表是類似游泳池更衣室的儲存格。而 dict 字典,則類似學校內每格都有名字的儲存櫃。通常用來存放有著有不同屬性的一筆數據。

想像一下,現在有一個故事人物設定資料,我們想記錄她的人名、班別、興趣等,便可以使用 dict 字典來儲存。

一個人物設定的字典結構

當我們要取得當中一個值時,可以使用名稱 及 [ ] 來取得,即 person["name"] 或 person["hobby"] 等。

有名字的儲存櫃

但一般人物設定的興趣不會只有一個,所以看來興趣這個屬性用列表來表達更適合。亦即:

一個人物設定的字典結構,當中興趣為列表

儲存一個值的變量名稱用單數,儲存一組值的變量名稱用複數

有沒有注意到,我將 hobby 改成 hobbies?因為現在興趣不止一個了,所以我習慣儲存一個值的變量名稱用單數,儲存一組值的變量名稱用複數。而如果單複數是相同的字,例如 news 等,則使用 news_items 和 news_item 來具分列表和單項。

這樣可以方便檢視代碼時,能從名稱察覺出邏輯的正確性。

單數與複數名稱,分別表達單項及一組記錄

列表裝著多個字典

以上是一個人物的檔案。那如果我們有一堆呢?那就用列表來裝著這些檔案吧。

可以想像為一個人物檔案是一個檔案夾。那麼一堆檔案夾就是滿滿的一列檔案了。

列表裝著多個的字典結構。

列表裝著多個字典的結構組合,在現實中有很大的應用空間。

我們可以用另一種視覺來想像這種結構。試想像你現在使用 Excel 等試算表軟件來儲存客戶資訊。通常我們會使用類似以下的結構來儲存,每行為一筆記錄,每欄為一項記錄的屬性。

使用試算表來儲存客戶資訊

對於每一筆資料,我們有不同的屬性,例如會員號碼、名稱、電郵等。等等,這不就是字典的作用嗎?對!對於每一個會員記錄,就是一個字典結構。以下是以第一筆會員資料於 Python 字典中的表達方式。

每一筆會員資料,以 Python 字典結構表達

而列,就是列表裝著這些會員字典結構,若以 Python 來表達,會得出以下代碼。

列表裝著字典的結構

又例如之前介紹如何使用 Python 取得現時 LikeCoin 幣價,我們從 CoinGecko 的 JSON API 取得的,就是一個字典(Dict)結構。又或者我們若果從天氣 API 取得 16 日天氣預報數據,可以想像到是一個列表裝著不同的字典結構。列表總共 16 格,每格就是一日的天氣預報。

例如以下是 OpenWeatherMap 的 16 天天氣 API,返回的字典結構內,有一個列表 "list" 的屬性,就是這 16 天的天氣記錄,當中每一筆,都是一個字典類型。

https://openweathermap.org/forecast16

OpenWeatherMap 的 API 返回截圖,可以看出當中的多天列表記錄。

總結

我們平常儲存資訊,要麼是一個值,要麼是一個列表,要麼是一個多屬性的字典結構。又或者是上述的組合,便可以構成我們平常儲存數據的大部份需求了。

— 麥誠 Makzan,2021-12-16。


我是麥誠軒(Makzan),除了正職外,平常我要麼辦本地賽與辦世界賽,要麼任教編程與網站開發的在職培訓。現正轉型將面授培訓內容寫成電子書、網上教材等,至今撰寫了 7 本書, 2 個視頻教學課程。

如果我的文章有價值,請訂閱贊助我持續創作分享。

訂閱贊助:https://liker.land/thomasmak/civic

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…
加载中…

发布评论