6.字典 字典的主要特性如下所示: 1.字典是使用大括弧進行定義 2.字典中的元素是鍵值對的形式出現,每個鍵值對之間使用冒號進行分隔,每個元素間使用逗號進行分隔 3.字典中鍵必須為不可更改的數據類型,如整型數據、浮點數據、布爾型、字元型、元組等,但不能列表和變數 6.1 基本使用 1.添加 直接給對 ...
6.字典
字典的主要特性如下所示:
- 1.字典是使用大括弧進行定義
- 2.字典中的元素是鍵值對的形式出現,每個鍵值對之間使用冒號進行分隔,每個元素間使用逗號進行分隔
- 3.字典中鍵必須為不可更改的數據類型,如整型數據、浮點數據、布爾型、字元型、元組等,但不能列表和變數
6.1 基本使用
1.添加
直接給對應的鍵賦值即可
d={}
d["a"]=123
# 輸出結果
{'a': 123}
2.獲取
直接填寫對應的鍵即可,但必須保證鍵存在
d={'a': 123}
d["a"]
# 輸出結果
123
3.更新
與添加類似,重新賦值的過程便是更新
d={'a': 123}
d["a"]=456
d
# 輸出結果
{'a': 456}
4.刪除
使用del,後面填寫相應的鍵即可
d={'a': 123}
del d["a"]
d
# 輸出結果
{}
6.2基本方法
字典中常用的方法為三個:
- keys():獲取字典的鍵
- values():獲取字典的值
- items():獲取字典的元素,即鍵值對
示例代碼如下所示:
d={
"beijing":"beijing",
"shanghai":"shanghai",
"jiangsu":"nanjing",
"zhejian":"hangzhou",
"hubei":"wuhai",
}
print(f"獲取字典的鍵:{d.keys()}")
print(f"獲取字典的值:{d.values()}")
print(f"獲取字典的鍵值對:{d.items()}")
輸出結果如下所示:
獲取字典的鍵:dict_keys(['beijing', 'shanghai', 'jiangsu', 'zhejian', 'hubei'])
獲取字典的值:dict_values(['beijing', 'shanghai', 'nanjing', 'hangzhou', 'wuhai'])
獲取字典的鍵值對:dict_items([('beijing', 'beijing'), ('shanghai', 'shanghai'), ('jiangsu', 'nanjing'), ('zhejian', 'hangzhou'), ('hubei', 'wuhai')])
6.3常用方法
- clear():清空字典中元素
- get():獲取指定鍵的值,如果未找到對應的鍵,則返回get指定的預設值,如果未指定預設值,則為None
- setdefault():與get類似,區別在於如果給定的鍵不在字典,則進行添加鍵,其值為指定的值,未指定則預設為None,如果鍵存在,則不做任何操作
- update():向字典中添加字典
- pop():刪除指定鍵值對
- popitem():刪除字典中最後的鍵值對,並返回刪除的鍵值對元組形式
- fromkeys():創建一個新字典,從指定的可迭代對象獲取對應的鍵,值為字典對應的初始值,常為None
示例代碼如下所示:
a=(1,2,3,4,5)
d={
"beijing":"beijing",
"shanghai":"shanghai",
"jiangsu":"nanjing",
"zhejian":"hangzhou",
"hubei":"wuhai",
}
ad={
"abc":122,
"def":123
}
print(f"使用get方法獲取指定鍵(存在)的值:{d.get('beijing','Test')}")
print(f"使用get方法獲取指定鍵(不存在)的值:{d.get('surpass','Test')}")
d.setdefault('beijing','beijingTest')
print(f"使用setdefault方法獲取指定鍵(存在)的值:{d}")
d.setdefault('surpass','Test')
print(f"使用setdefault方法獲取指定鍵(不存在)的值:{d}")
d.update(ad)
print(f"使用update在字典添加字典:{d}")
d.pop("abc")
print(f"使用pop刪除指定鍵的值:{d}")
tmp=d.popitem()
print(f"使用pop刪除指定鍵的值:{d} 刪除的元素為:{tmp}")
d1=dict.fromkeys(a)
print(f"使用fromkeys創建新的字典,並將可迭代元素的值做為鍵,其對應的值為初始值:{d1}")
d2=dict.fromkeys(a,100)
print(f"使用fromkeys創建新的字典,並將可迭代元素的值做為鍵,其對應的值為初始值:{d2}")
輸出結果如下所示:
使用get方法獲取指定鍵(存在)的值:beijing
使用get方法獲取指定鍵(不存在)的值:Test
使用setdefault方法獲取指定鍵(存在)的值:{'beijing': 'beijing', 'shanghai': 'shanghai', 'jiangsu': 'nanjing', 'zhejian': 'hangzhou', 'hubei': 'wuhai'}
使用setdefault方法獲取指定鍵(不存在)的值:{'beijing': 'beijing', 'shanghai': 'shanghai', 'jiangsu': 'nanjing', 'zhejian': 'hangzhou', 'hubei': 'wuhai', 'surpass': 'Test'}
使用update在字典添加字典:{'beijing': 'beijing', 'shanghai': 'shanghai', 'jiangsu': 'nanjing', 'zhejian': 'hangzhou', 'hubei': 'wuhai', 'surpass': 'Test', 'abc': 122, 'def': 123}
使用pop刪除指定鍵的值:{'beijing': 'beijing', 'shanghai': 'shanghai', 'jiangsu': 'nanjing', 'zhejian': 'hangzhou', 'hubei': 'wuhai', 'surpass': 'Test', 'def': 123}
使用pop刪除指定鍵的值:{'beijing': 'beijing', 'shanghai': 'shanghai', 'jiangsu': 'nanjing', 'zhejian': 'hangzhou', 'hubei': 'wuhai', 'surpass': 'Test'} 刪除的元素為:('def', 123)
使用fromkeys創建新的字典,並將可迭代元素的值做為鍵,其對應的值為初始值:{1: None, 2: None, 3: None, 4: None, 5: None}
使用fromkeys創建新的字典,並將可迭代元素的值做為鍵,其對應的值為初始值:{1: 100, 2: 100, 3: 100, 4: 100, 5: 100}
6.4 字典鍵確定方法
因為字典的鍵是不可更改的,那如何判斷一個數據類型是否可更改呢?兩種方法如下所示:
- 使用id()方法:對一個數據類型進行一些操作,比較前後兩個id()出來的結果是否一樣,一樣則代表可更改,不一樣,則代表不可更改。
- 使用hash()方法:使用hash()方法後,如果不報錯,則表明可以被hash,即不可更改,否則則可更改
s="abc"
id(s)
# 輸出結果
1536614318320
s+="aa"
id(s)
# 輸出結果
1536635062128
import hashlib
hash("123")
# 輸出結果
-7084025808549728804
hash(["123"])
# 輸出結果
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: unhashable type: 'list'
以上示例表明字元是可以被hash的,可以做為字典的鍵,但列表卻不行。
6.5 優缺點
- 優點:查找和插入速度快
- 缺點:記憶體占用較大
本文同步在微信訂閱號上發佈,如各位小伙伴們喜歡我的文章,也可以關註我的微信訂閱號:woaitest,或掃描下麵的二維碼添加關註: