1. 程式人生 > 其它 >python之字典基礎相關

python之字典基礎相關

描述:

字典是另一種可變容器模型,且可儲存任意型別物件。
字典的每個鍵值 key=>value 對用冒號 : 分割,每個對之間用逗號(,)分割,整個字典包括在花括號 {} 中
鍵必需是唯一的,值可以取任何資料型別

字典的建立

dict1 = {}   #建立一個空字典,等價於:dict1 = dict()
dict2 = {"key1": "value1"}  # 等價於:dict2 = dict(key1="value1")
dict3 = {"key1": "value1", "key2": "value2"} # 等價於:dict3 = dict(key1="value1", key2="value2")
dict4 = dict([("key1","value1"), ("key2","value2")]) # 等價於:dict4 = dict({"key1": "value1"}, key2="value2")
dict5 = dict(zip(["key1","key2"],["value1","value2"])) # 等價於:dict5 = dict({"key1": "value1", "key2": "value2"})

字典的修改/編輯

# 修改字典中存在的鍵,通過key來修改值
#print(f"修改前的字典為:{dict2}")
dict2["key1"] = "update_value1"
#print(f"修改key1=update_value1後的字典為:{dict2}")

# 修改字典中不存在的鍵,通過key來修改值。因字典中不存在這個鍵,故相當於新增一個鍵
#print(f"修改前的字典為:{dict2}")
dict2["key2"] = "value2"
#print(f"修改key2=value1後的字典為:{dict2}")

# 使用 update() 修改多個鍵值對(鍵在字典中存在)
dict6 = dict.fromkeys("hello")
#print(f"修改前的字典為:{dict6}")
dict6.update({'h':12, 'e':13}) # 等價於:dict6.update(h='12', e='13'})
#print(f"修改後的字典為:{dict6}")

# 使用 update() 修改多個鍵值對(鍵在字典中不存在)
dict6 = dict.fromkeys("hello")
#print(f"修改前的字典為:{dict6}")
dict6.update({'r':12, 'j':13}) # 等價於:dict6.update(r='12', j='13'})
#print(f"修改後的字典為:{dict6}")

查詢

print()
print(f"字典【{dict5}】中key1的值為:{dict5['key1']}") #使用鍵來查詢值,下標法
print(f"字典【{dict5}】中key2的值為:{dict5.get('key2')}") #使用鍵來查詢值,get()方法,鍵存在的情況

#當需要查詢的鍵不存在的時候,會報異常,可以通過get()方法中的第二個引數,來指定返回的描述值,setdefault()指定預設值
print(f"字典【{dict5}】中key3的值為:{dict5.get('key3','key3鍵不存在')}")
print(f"字典【{dict5}】中使用setdefault指定key4的值為:{dict5.setdefault('key4','value4')}")
print(f"最終字典:{dict5}")
print()
print("=========使用setdefault指定key2的值為value5================")
# 使用setdefault方法時鍵在字典中存在時不會對已存在的鍵設定新的值,相當於查詢
print(f"字典【{dict5}】中使用setdefault指定key2的值為:{dict5.setdefault('key2','value5')}") 
print(f"最終字典:{dict5}")
print("-------------------------------------------------------------")
print(f"字典【{dict5}】中所有的項: {dict5.items()}")
print(f"字典【{dict5}】中所有的鍵: {dict5.keys()}")
print(f"字典【{dict5}】中所有的值: {dict5.values()}")
print(f"字典【{dict5}】中所有的鍵的列表: {list(dict5)}") # 鍵的列表
print(f"字典【{dict5}】中所有的值的列表: {list(dict5.values())}") # 值的列表
dict7 = dict5.copy()
print(f"字典【{dict5}】淺拷貝後,結果: {dict7}")

刪除

#使用pop()刪除字典中指定元素
#print(f"刪除前的字典為:{dict2}")
dict2.pop('key1')  #刪除存在鍵的情況;如刪除的鍵不存在,則會報異常:KeyError(可使用dict2.pop('key3','鍵不存在')返回具體描述)
#print(f"刪除key1鍵後的字典為:{dict2}")

#使用popitem()刪除字典中最後一個鍵值對(python 3.7 以後版本)
#print(f"刪除前的字典為:{dict3}")
dict3.popitem()
#print(f"popitem()刪除後的字典為:{dict3}")

#使用del 刪除 某個鍵或整個字典
#print(f"刪除前的字典為:{dict4}")
del dict4['key1']  #刪除某個具體的鍵
#print(f"刪除鍵:key1 後的字典為:{dict4}")
del dict4   # 刪除整個字典,訪問這個字典時提示:未定義
#print(f"刪除字典dict4後的字典為:{dict4}")

#使用clear()清空字典
#print(f"字典元素清空前為:{dict5}")
dict5.clear()
#print(f"字典元素清空後為:{dict5}")

字典推導式

print("-------------------------------------------------------------")
#print(f"待處理的字典{dict6}")
dict7 = {k:ord(k) for k in dict6.keys()} #字典推導式
#print(f"提取其中的鍵並輸出對應的ASCII編碼後的字典: {dict7}")

print("-------------------------------------------------------------")
dict7 = {i:pow(i,2) for i in range(11) if i % 2 == 0}
print(f"1~10中偶數的平方: {dict7}")