今天番茄加速就來說說Python資料類型之字典dict

# 字典是一種可變容器類型,可存儲任意類型對象
# 字典以鍵值對存儲資料,key-value形式,鍵值之間使用冒号:分隔,每個鍵值中間用逗号,分隔
# 字典包含在大括号,花括号{}中
# python中鍵必須是不可變的,但值可取任何資料類型
# 元組可以作為 dict 的 key,但清單不能作為元組的 key,dict 要求 key 必須是不可變類型,但清單是可變類型
dic = {"key1":"value1","key2":"value2"}
print(dic)
print(type(dic))
# 建立字典
# 建立一個空的字典
b = {}
print(b)
print(type(b))
# 直接指派建立
a = {"name":"Tom","age":19,"area":"shanghai",123:456}
print(a)
print(type(a))
# 通過關鍵字dict和關鍵字參數建立
c = dict(aa="bb",bb="你好",cc="acc")
print(c)
# 通過關鍵字dict和二進制組清單建立
list = [('name',"Tom"),('age',20),('area', "shanghai")]
d = dict(list)
print(d)
# 通過字典推導式建立
f = {i:2+i for i in range(1,5)}
print(f)
# 通過關鍵字dict和zip結合建立
e = dict(zip('ab', [1, 2]))
print(e)
# 通過dict.fromkeys()建立
# 這個通常用來初始化字典, 設定value的預設值
g = dict.fromkeys(range(5), 'v')
print(g)
# 字典中鍵一般是唯一的,如果重複最後的一個鍵值對會替換前面的,值不需要唯一
abc = {"ab":"11","ac":"22","ad":"33","ab":"55"}
print(abc)
print(type(abc))
# 字典的通路
# 通路字典中的資料:字典是鍵值對,通路的時候根據key進行通路操作
# a[key]
# a.get(key)
# 使用方括号通路字典,key必須是存在,如果不存在,程式會報異常
print(a["name"])
# 使用get通路,key不存在,會傳回None,空的意思
print(a.get("age"))
print(a.get("abcd"))
# 字典的常用操作
# 字典資料修改
# 字典資料删除
# 字典資料增加
# 字典鍵的特性:不可重複,不可變
# 添加一個字典:修改 ,
# 如果key不存在,這就是一個添加操作,如果key存在,這就是一個修改操作
a["msg"] = "你好"
print(a)
a["age"] = 29
print(a)
# 删除
del a["age"]
print(a)
# 清單,不可插入字典,可變
# a1 = [1,2,3]
# a[a1] = "abc"
# print(a)
# 元組
a2 = (1,2,3)
a[a2] = "abc"
print(a)
# 如果要判斷字典是否包含指定的 key,則可以使用 in 或 not in 運算符。字典中in 或 not in 運算符都是基于 key
來判斷的,字典的 key 就相當于它的索引
# 判斷字典 a 中是否包含名為'age'的key
print("age" in a)
# 輸出True,False
# 判斷 a 中是否包含名為'school'的key
print('school' in a)
# 判斷'school' key不再字典 a 中
print('school' not in a)
# 清單的索引總是從 0 開始、連續增大的;但字典的索引即使是整數類型,也不需要從 0
開始,而且不需要連續。是以,清單不允許對不存在的索引指派,但字典則允許直接對不存在的 key 指派,這樣就會為字典增加一個 key-value 對
# 字典的常用方法
# keys 擷取所有的key
# values 擷取所有的值
# pop 根據鍵彈出
# popitem 彈出最後一組鍵值對
# update 更新資料
# clear 清除資料
print(a.keys())
print(a.values())
# 擷取所有的鍵值對
print(a.items())
# pop彈出的是字典中存在的key
print(a.pop("name"))
# popitem() 方法用于随機彈出字典中的一個 key-value 對,但其實是彈出最後一個鍵值對
print(a.popitem())
print(a)
# 更新一個鍵值對
a.update(msg="世界")
print(a)
# 清空字典
print(a.clear())
# setdefault()方法:根據 key來擷取對應value的值;
# setdefault() 方法總能傳回指定 key 對應的value;如果該 key-value對存在,則直接傳回該key對應的
value;如果該key-value 對不存在,則先為該 key設定預設的value,然後再傳回該 key對應的value。
# 設定預設值,該key在dict中不存在,新增key-value對
a = {"name":"Tom","age":19,"area":"shanghai",123:456}
print(a.setdefault('school', "大學")) # 9.2
print(a)
# 設定預設值,該key在dict中存在,不會修改dict内容
print(a.setdefault('name', "Lida")) # 8.5
print(a)