Python 入門速成(二)dict 字典概念篇
上星期介紹了 Python 入門之變量名字及列表。我們學到列表是類似游泳池更衣室的儲存格。而 dict 字典,則類似學校內每格都有名字的儲存櫃。通常用來存放有著有不同屬性的一筆數據。
想像一下,現在有一個故事人物設定資料,我們想記錄她的人名、班別、興趣等,便可以使用 dict 字典來儲存。
![](https://assets.matters.news/embed/954fdbdc-9015-4bdf-a5bf-38e12f759f23.png)
當我們要取得當中一個值時,可以使用名稱 及 [ ] 來取得,即 person["name"] 或 person["hobby"] 等。
![](https://assets.matters.news/embed/408df1fb-f451-452e-a3ec-ba4a49d5aede.png)
但一般人物設定的興趣不會只有一個,所以看來興趣這個屬性用列表來表達更適合。亦即:
![](https://assets.matters.news/embed/97b133a1-8a72-4f0f-aef6-441da56dc19e.png)
儲存一個值的變量名稱用單數,儲存一組值的變量名稱用複數
有沒有注意到,我將 hobby 改成 hobbies?因為現在興趣不止一個了,所以我習慣儲存一個值的變量名稱用單數,儲存一組值的變量名稱用複數。而如果單複數是相同的字,例如 news 等,則使用 news_items 和 news_item 來具分列表和單項。
這樣可以方便檢視代碼時,能從名稱察覺出邏輯的正確性。
![](https://assets.matters.news/embed/fa206685-b7cf-408b-aad7-c6851204ef09.jpeg)
列表裝著多個字典
以上是一個人物的檔案。那如果我們有一堆呢?那就用列表來裝著這些檔案吧。
可以想像為一個人物檔案是一個檔案夾。那麼一堆檔案夾就是滿滿的一列檔案了。
![](https://assets.matters.news/embed/dd5f59ff-6afe-445a-94d3-59faa4a28544.png)
列表裝著多個字典的結構組合,在現實中有很大的應用空間。
我們可以用另一種視覺來想像這種結構。試想像你現在使用 Excel 等試算表軟件來儲存客戶資訊。通常我們會使用類似以下的結構來儲存,每行為一筆記錄,每欄為一項記錄的屬性。
![](https://assets.matters.news/embed/514d2c24-81b9-4fbd-9d9a-9a78fd14fa16.png)
對於每一筆資料,我們有不同的屬性,例如會員號碼、名稱、電郵等。等等,這不就是字典的作用嗎?對!對於每一個會員記錄,就是一個字典結構。以下是以第一筆會員資料於 Python 字典中的表達方式。
![](https://assets.matters.news/embed/6e651aa2-5630-42ac-9946-fe38cc4c589f.png)
而列,就是列表裝著這些會員字典結構,若以 Python 來表達,會得出以下代碼。
![](https://assets.matters.news/embed/14de82af-f397-470c-93e1-81dbd72e9b1b.png)
又例如之前介紹如何使用 Python 取得現時 LikeCoin 幣價,我們從 CoinGecko 的 JSON API 取得的,就是一個字典(Dict)結構。又或者我們若果從天氣 API 取得 16 日天氣預報數據,可以想像到是一個列表裝著不同的字典結構。列表總共 16 格,每格就是一日的天氣預報。
例如以下是 OpenWeatherMap 的 16 天天氣 API,返回的字典結構內,有一個列表 "list" 的屬性,就是這 16 天的天氣記錄,當中每一筆,都是一個字典類型。
https://openweathermap.org/forecast16
![](https://assets.matters.news/embed/23905a48-4e12-4eac-91cb-919256993405.png)
總結
我們平常儲存資訊,要麼是一個值,要麼是一個列表,要麼是一個多屬性的字典結構。又或者是上述的組合,便可以構成我們平常儲存數據的大部份需求了。
— 麥誠 Makzan,2021-12-16。
我是麥誠軒(Makzan),除了正職外,平常我要麼辦本地賽與辦世界賽,要麼任教編程與網站開發的在職培訓。現正轉型將面授培訓內容寫成電子書、網上教材等,至今撰寫了 7 本書, 2 個視頻教學課程。
如果我的文章有價值,請訂閱贊助我持續創作分享。
喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!
![](https://imagedelivery.net/kDRCweMmqLnTPNlbum-pYA/prod/avatar/91761734-dfe5-46aa-b419-61ef2ad591aa.png/public)
![logbook icon](https://assets-next.mattersprotocol.io/_next/static/media/logbook.2cfac4f7.gif)
- 来自作者
- 相关推荐