iT邦幫忙

2025 iThome 鐵人賽

DAY 12
0

截至目前為止經歷了串列 List集合 Set元組 Tuple,今天要講的是字典 Dict,這是一種重要且常用的資料結構,日常使用出場頻率和串列 List差不多!

字典是用來儲存鍵值對 key-value-pair,每個鍵 key會對應到一個值 value,透過鍵 key可以快速查詢、修改、刪除對應的值 value,在前幾日有提到字典的底層是使用hash,所以也因這樣才可以在操作上的效率非常高。

特性

  1. 鍵值對(key-value-pair)
  • 字典是由『鍵』和『值』所組成,每一個鍵對應一個值。
  • 鍵必需是不可變的,例如intstrtuple
  • 值可以是任何的資料型別,包括可變物件listsetdict
  1. 無順序性
  • 在 Python3.6 之前的字典是無順序性且元素排列順序不固定。
  • 到了 Python3.7 開始字典仍保留資料插入的順序,也就是說新增元素時的順序會被保留下來。
  1. 唯一性
  • 字典中的鍵必需是唯一的,如果新增資料時該鍵 key已存在,那麼原本的資料則會被覆蓋掉。

建立字典

  1. 使用{}包裹著內容
person = {
    "name": "小明",
    "age": 18,
    "country": "Taiwan",
}
  1. 空字典
    這兩種方式都會建立一個空的字典。
person = {}
person = dict()
  1. 使用dict()函式
person = dict(name="小明", age=18, country="Taiwan")
print(person) # {'name': '小明', 'age': 18, 'country': 'Taiwan'}

新增鍵值

person = {
    "name": "小明",
    "age": 18,
}
person["country"] = "Taiwan"
print(person) # {'name': '小明', 'age': 18, 'country': 'Taiwan'}

更新鍵值

person = {
    "name": "小明",
    "age": 18,
}
person["age"] = 30
print(person) # {'name': '小明', 'age': 30}

在更新的部分可以操作更新一個或多個值,所以在更新實際上會更像是合併的概念,例如:

user = {
    "name": "小明",
    "age": 18,
    "country": "Taiwan"
}
data = {
    "name": "小華",
    "age": 30,
}
user.update(data)
print(user) # {'name': '小華', 'age': 30, 'country': 'Taiwan'}

不過在這邊要特別注意,當原本就存在的鍵 key要進行增加或是更新時,新資料會覆蓋掉舊有的資料。

常見操作

  • 計算個數
person = {
    "name": "小明",
    "age": 18,
}
print(len(person)) # 2
  • 清除內容
person = {
    "name": "小明",
    "age": 18,
}
person.clear()
print(person) # {}
  • 取出內容
person = {
    "name": "小明",
    "age": 18,
}
person.pop("name")
print(person) # {'age': 18}

刪除鍵值

暴力解就對了!直接上 code

user = {
    "name": "小明",
    "age": 18,
    "country": "Taiwan"
}
del user
print(user) # NameError: name 'user' is not defined. Did you mean: 'super'?

開箱運算子

在 Python 中,**是用來解包 unpack字典的運算子,功能不外乎就是將字典的鍵值對取出來,並將他們作為關鍵參數傳入函式或是在另一個字典中合併使用。

有關於函式用法在之後會再介紹。

dict1 = {
    "a": 1,
    "b": 2,
}
dict2 = {
    "b": 3,
    "c": 4,
    "d": 5,
}
merged = {**dict1, **dict2}
print(merged) # {'a': 1, 'b': 3, 'c': 4, 'd': 5}

那麼今天就介紹到這,明天見ㄅㄅ!


上一篇
筆記Day11:元組 Tuple
系列文
Python 學習筆記12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言