更新於 2024/12/11閱讀時間約 6 分鐘

【Python 筆記】探索字典(Dictionary):靈活的鍵值對與應用案例分析

嗨,大家好!我是 Rex,今天繼續跟大家分享我的 Python 筆記。

Introduction

這次的主題是另一個非常常見的資料結構 - 字典(Dictionary)。字典在大部分資料分析專案中都能見到哦。字典也被稱為散列映射(Hash Map)或聯合數組(Associative Array),是一種非常靈活的數據結構。它儲存了一組由鍵值對(key-value pairs)組成的集合。鍵必須是不可變(immutable)的物件,比如字符串、數字或者元組。值則可以是任何 Python 的物件。字典使用大括號 {} 包裹住數據,當你在 Python 中看到長這樣的程式碼時,它就是字典啦!

優點

  • 快速查找:字典提供快速的查找功能,適合用於基於 Unique Identifier 進行數據搜尋和操作。
  • 靈活的鍵值存儲:它能夠輕鬆地存儲和管理不同類型的數據對應關係。

Coding Example

字典在生活中的應用非常廣泛。例如,在大多數軟體公司中,字典可以用來儲存使用者的資料(如名稱、年齡、電子郵件等)。對於語言學習軟體而言,字典則可以儲存句子的翻譯對照(例如,"我是 Rex" 對應到 "I am Rex")。上一篇我以旅遊清單為例子解釋列表(List),今天就來做延伸,用字典來儲存旅遊地點的中文和英文名稱。

首先,我們的資料長這樣

travel_destinations = { 
"Paris": "巴黎",
"Tokyo": "東京",
"New York": "紐約",
"Sydney": "雪梨",
"Rome": "羅馬" }
  1. 讀取數值 - 想知道 Paris 的中文名稱
travel_destinations["Paris"]  # Output "巴黎"
  1. 新增一個新的旅遊城市 - “Barcelona” 的英文名和中文名
travel_desitination["Barcelona"] = "巴塞隆納"
  1. 修改一個城市的中文命名 - "New York" 改成 "大蘋果" [備註: 延伸資料在這!]
travel_desitination["New York"] = "大蘋果"
  1. 刪除某個城市 - 假如你不想去 Syndney 了
del travle_destination["Syndney"]
  1. 取得所有旅遊地的英文名稱 (Key 鍵) - 使用 dict.keys()
keys = travle_destination.keys()
print(values)
# Output: dict_keys(['Paris', 'Tokyo', 'New York', 'Rome', 'Barcelona'])
  1. 取得所有旅遊地的中文名稱 (Value 值) - 使用 dict.values()
values = travle_destination.values()
print(keys)
# Output: dict_values(['巴黎', '東京', '大蘋果', '羅馬', '巴塞隆納'])
  1. 同時取得旅遊地的中文以及英文名稱 (Key-Value 鍵值) - 使用 dict.items()
items = travel_destinations.items()
print(items)
# Output: dict_items([('Paris', '巴黎'), ('Tokyo', '東京'), ('New York', '大蘋果'), ('Rome', '羅馬'), ('Barcelona', '巴塞隆納')])


這些提到的方法都是我在做資料分析時經常使用的功能。字典是一個非常重要的資料結構,不論是用來儲存資料,還是通過 API 向第三方取資料(通常以 JSON 格式),這些基本操作在工作中都不可或缺。當然,這篇教學不會涵蓋所有字典的方法,如果有興趣的話,歡迎大家點擊我下方提供的延伸連結進一步研究。

最後,在這個教學的結束,我也給大家一個觀念題和兩個 Coding 題目,邀請各位讀者一起練習!希望大家能夠透過這些練習,進一步加深對字典的理解和應用。

Coding Exercise

  • 建立一個名為 student 的字典,存儲學生的名字、年齡和成績。從字典中打印出學生的年齡。
  • (進階題,除了 forloop,其他概念在這堂課都有提到!) 寫一個函數,該函數接收一個字典作為輸入,並返回一個新的字典,其中的鍵和值交換。


Concept Question

  • 字典中的允許哪些數據類型? (List? Int? Dict? Float? String? ...)


歡迎各位在留言區分享你們的想法,有問題的話也歡迎提問!

下一篇我會提到其他資料結構,沒意外的話會是集合 (Set),我們下次見!


Reference

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.