6. 字典

I. 什麼是字典(Dictionary)?

直接英翻中的話就稱為:字典 因此,其實Dictionary就像大家小時候查字典的方式相同 我們會利用部首 or 筆畫數 or 注音符號索引,找到我們想找的內容在哪一頁 在Python中,我們也是利用索引值(Key)去找相對應的內容(Value)唷!!

II. 字典有甚麼優勢

有沒有想過,其實儲存大量資料也可以利用陣列就好 為什麼需要有「字典」這種資料型態呢?

III. 創造一個字典

<dict_name> = {<Key>:<Value>}。 每一對<Key>:<Value>利用逗號分隔

Lance_dict = {
  "name":"Lance",
  "age":18,
  "habbit":"eating"
}

直接利用dict()將它變為dict的型態

Lance_dict = dict(name="Lance", age=18, habbit="eating")

多層字典

name_dict = {
  "Lance": {
    "height":180,
    "age":18,
    "habbit":"eating"
  },
  "Amy": {
    "height":190,
    "age":10,
    "habbit":"hiking"
  }  
}

# 多層次字典要用多維度陣列存取
print(name_dict["Amy"]["age"]) # 10

【補充】可以利用zip快速建立字典

dic = dict(zip('abcd', range(4)))
print(dic) # {'a': 0, 'b': 1, 'c': 2, 'd': 3}

dic = dict(zip('abcd', range(1,5)))
print(dic) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}

dic = dict(zip['a', 'b', 'c'], range(3)))
print(dic) # {'a': 0, 'b': 1, 'c': 2}

IV. 利用key值找到相對應的value

利用<dict_name>[<key>]<dict_name>.get(<key>)

Lance_dict = {
  "name":"Lance",
  "age":18,
  "habbit":"eating"
}

print(Lance_dict["name"]) # Lance
print(Lance_dict.get("name")) # Lance

V. 改變某key值所對應的value

直接利用<dict_name>[<key>] = <new_value> 即可

Lance_dict = {
  "name":"Lance",
  "age":18,
  "habbit":"eating"
}

Lance_dict["age"] = 2023

print(Lance_dict.get("age")) # 2023

VI. 新增新的key值和value

直接利用<dict_name>[<new_key>] = <new_value> 即可

Lance_dict = {
  "name":"Lance",
  "age":18,
  "habbit":"eating"
}

Lance_dict["height"] = 180

print(Lance_dict) # {'name': 'Lance', 'age': 18, 'habbit': 'eating', 'height': 180}

VII. 刪除特定key值和所對應的value

直接利用del <dict_name>[<key>]<dict_name>.pop(<key>)

Lance_dict = {
  "name":"Lance",
  "age":18,
  "habbit":"eating"
}

del (Lance_dict["habbit"])

print(Lance_dict) # {'name': 'Lance', 'age': 18}

若利用<thisdict>.popitem()會直接去除掉字典中最新(最後加進去)的那一筆

VIII. 列出所有key值 或 value

Lance_dict = {
  "name":"Lance",
  "age":18,
  "habbit":"eating"
}

# 列出所有key值
for x in Lance_dict:
  print(x) 

# 列出所有value值
for x in Lance_dict:
  print(Lance_dict[x]) 

# 列出所有value值
for x in Lance_dict.values():
  print(x)

# 列出所有 key 及其相對應的 value,x:key y:value
for x, y in Lance_dict.items():
  print(x, y)

IX. 排序字典中的資料

key來排序

dic = {3: 2, 1: 3, 2: 1}
dic = dict(sorted(dic.items()))
print(dic) # {1: 3, 2: 1, 3: 2}

value來排序

dic = {3: 2, 1: 3, 2: 1}
dic = dict(sorted(dic.items(), key=lambda x: x[1]))
print(dic) # {2: 1, 3: 2, 1: 3}

X. 確認某key值是否存在字典內

Lance_dict = {
  "name":"Lance",
  "age":18,
  "habbit":"eating"
}

if "weight" in Lance_dict:
  print("Yes")

XI. 確認字典的總資料筆數

利用len(<dict_name>)

Lance_dict = {
  "name":"Lance",
  "age":18,
  "habbit":"eating"
}

print(len(Lance_dict)) # 3

XII. 複製整個字典

利用<dict_name>.copy()

Lance_dict = {
  "name":"Lance",
  "age":18,
  "habbit":"eating"
}

mydict = Lance_dict .copy()

print(mydict) # {'name': 'Lance', 'age': 18, 'habbit': 'eating'}

XIII. 清空字典中的資料

利用<dict_name>.clear()

Lance_dict = {
  "name":"Lance",
  "age":18,
  "habbit":"eating"
}

mydict = Lance_dict.clear()

print(mydict) # None

Last updated