字典是一個無序、可變和有索引的集合。在 Python 中,字典用花括號編寫,擁有鍵和值。
在Python中,我們可以使用 {} 或者 dict() 函數來創建字典。
1、使用 {}
empty_dict = {
}
:
分割,且每個對之間用逗號 ,
分割,整個字典包括在花括號 {}
中,格式如下:d = {
key1: value1, key2: value2, key3: value3}
注意:dict 作為Python的關鍵字和內置函數,變量名不建議命名為 dict 。
2、使用dict()
empty_dict = dict()
notEmpty_dict = dict(name='xm', gender=True, age=21)
在使用 dict() 創建字典時,在小括號
()
內要以 key=value 的形式編寫。
1、不允許同一個鍵出現兩次。創建時如果同一個鍵被賦值兩次,則後一個值會被記住,如下實例:
repeat_dict = {
'name': 'xm', 'gender': True, 'name': 'pink'}
print(repeat_dict) # {'name': 'pink', 'gender': True}
2、鍵必須不可變,所以可以用數字、字符串或元組充當,而用列表就不行,如下實例:
error_dict = {
['name']: 'pink', 'age': 21}
print(error_dict)
當字典的鍵使用列表時,會報錯
TypeError: unhashable type: 'list'
。
如果想要訪問某一個鍵所對應的值,直接將相應的鍵放入到 []
內,如下實例:
not_dict = {
'name': 'xm', 'gender': True, 'age': 21, 178: 65}
print(not_dict['name'])
print(not_dict[178])
循環遍歷字典時,返回值是字典的鍵,但也有返回值的方法。
info_dict = {
'name': 'xm', 'gender': True, 'age': 21}
for key in info_dict:
print(key)
for key in info_dict:
print(info_dict[key])
value()
方法返回字典的值:for key in info_dict.values():
print(key)
items()
方法遍歷鍵和值for key, value in info_dict.items():
print(key, value)
要確定字典中是否存在指定的鍵,使用 in 關鍵字:
info_dict = {
'name': 'xm', 'gender': True, 'age': 21}
print('name' in info_dict)
如果字典中存在指定的鍵,則返回 True ,反之返回 False 。
字典也可以包含許多字典,這被稱為嵌套字典。
my_family = {
'child1': {
'name': 'Phoebe Adele',
'birth': 2002
},
'child2': {
'name': 'Jennifer Katharine',
'birth': 1996
},
'child3': {
'name': 'Rory John',
'birth': 1999
}
}
或者,如果你想嵌套三個已經作為字典存在的字典。
child1 = {
'name': 'Phoebe Adele',
'birth': 2002
}
child2 = {
'name': 'Jennifer Katharine',
'birth': 1996
}
child3 = {
'name': 'Rory John',
'birth': 1999
}
my_family = {
'child1': child1,
'child2': child2,
'child3': child3
}
1、print()
函數
print() 函數的功能我們已經非常熟悉了,就是打印輸出。
info_dict = {
'name': 'xm', 'gender': True, 'age': 21}
print(info_dict)
輸出:
{
'name': 'xm', 'gender': True, 'age': 21}
2、len()
函數
當我們要確定一個字典有多少項目(鍵值對),可以使用 len() 函數。
info_dict = {
'name': 'xm', 'gender': True, 'age': 21}
print(len(info_dict))
輸出結果:
3
使用 len() 函數返回的結果,意為有多少個鍵值對(即多少個
key: value
)。
3、type()
函數
使用 type() 函數可以確定一個變量是什麼類型(字符串、列表、元組、字典或集合)。
info_dict = {
'name': 'xm', 'gender': True, 'age': 21}
print(type(info_dict))
輸出結果:
<class 'dict'>
- 當對
info_dict = {key: value}
使用 type() 返回變量類型時,會輸出<class 'dict'>
,表明這是一個字典。- 當對
info_set = {key, key}
使用 type() 返回變量類型時,會輸出<class 'set'>
,表明這是一個集合。
4、del
函數
del 關鍵字的作用是完全刪除字典(和下述要說的清空字典並不一樣)
info_dict = {
'name': 'xm', 'gender': True, 'age': 21}
del info_dict
print(info_dict)
注意: 當我們使用 del 刪除某字典後,再使用 print() 函數打印輸出時,會報一個錯誤
NameError: name 'info_dict' is not defined
,意為該字典並未被創建,注意和清空字典相區分。
5、str()
函數
str() 的作用就是將一個字典轉換成字符串,以便後續的操作。
info_dict = {
'name': 'xm'}
info_str = str(info_dict)
print(type(info_str)) # <class 'str'>
如果我們對上述轉換後的字符串打印輸出的話。會返回
{'name': 'xm'}
,但此時這只是一個字符串,並不存在鍵值對。
1、pop()
方法
pop() 方法從字典中刪除指定的項目,被刪除的項目的值是這個 pop() 方法的返回值。
語法
dictionary.pop(key, default)
參數值
實例
info = {
'name': 'pink', 'gender:': True, 'age': 21}
print(info)
key
存在 - 刪除字典中對應的元素info.pop('name')
print(info)
{
'gender:': True, 'age': 21}
key
不存在 - 返回設置指定的默認值 defaulterror = info.pop('nickname', 'key不存在')
print(error)
key不存在
key
不存在且默認值 default 沒有指定 - 觸發 KeyError
異常:KeyError: 'nickname'
2、popitem()
方法
popitem() 方法隨機返回並刪除字典中的最後一對鍵和值。如果字典已經為空,卻調用了此方法,就報出 KeyError 異常。
語法
dictionary.popitem()
參數值
無參數
實例
info = {
'name': 'pink', 'gender:': True, 'age': 21}
print(info)
info.popitem()
print(info)
{
'name': 'pink', 'gender:': True, 'age': 21}
{
'name': 'pink', 'gender:': True}
3、clear()
方法
clear() 方法用於刪除字典內所有元素。
語法
dictionary.clear()
參數值
無參數
實例
info = {
'name': 'pink'}
info.clear()
print(info)
{
}
4、del
函數
del 函數可用於刪除某一特定的鍵值對。
info = {
'name': 'pink', 'gender': True}
print(info)
del info['name']
print(info)
{
'name': 'pink', 'gender': True}
{
'gender': True}
5、clear()
方法和del
函數區別
clear() 方法:清空字典(即刪除字典內所有鍵值對),執行結束後,使用 print() 打印時,輸出
{}
,說明字典還存在,只是一個空字典。del 函數:刪除字典(即刪除所有鍵值對以及字典),執行結束後,使用 print() 打印時,會報錯
NameError: name 'info' is not defined
,表明該字典未被定義,即已不存在字典。
1、copy()
方法
copy() 方法返回一個字典的淺復制。
語法
dictionary.copy()
參數值
無參數
實例
info = {
'name': 'pink', 'gender': True}
co = info.copy()
print(co)
{
'name': 'pink', 'gender': True}
2、update()
方法
update() 方法把字典參數 dict2 的 key/value(鍵/值) 對更新到字典 dict 裡。
語法
dictionary.update(iterable)
參數值
實例
info_1 = {
'name': 'pink'}
info_2 = {
'age': 21}
info_1.update(info_2)
print(info_1)
{
'name': 'pink', 'age': 21}
3、直接更新
可以通過引用鍵名來更改特定項的值:
info = {
'name': 'xm'}
info['name'] = 'pink'
print(info)
{
'name': 'pink'}
info['gender'] = True
print(info)
{
'name': 'xm', 'gender': True}
fromkeys() 方法用於創建一個新字典,以序列 keys 中元素做字典的鍵,value 為字典所有鍵對應的初始值。
語法
dict.fromkeys(keys, value)
參數值
實例
keys = {
'A', 'B'}
this_dict = dict.fromkeys(keys)
print(this_dict)
{
'A': None, 'B': None}
keys = {
'A', 'B'}
this_dict = dict.fromkeys(keys, 10)
print(this_dict)
{
'A': 10, 'B': 10}
1、get()
方法
get() 方法返回具有指定鍵的項目值。
語法
dictionary.get(keyname, value)
參數值
實例
get()
用法info = {
'name': 'pink', 'age': 21}
print(info.get('age'))
# 沒有設置 Sex,也沒有設置默認的值,輸出 None
print(info.get('sex'))
# 沒有設置 Salary,輸出默認的值 0.0
print(info.get('salary', 0.0))
21
None
0.0
get()
方法 VSdict[key]
訪問元素區別get(key) 方法在 key(鍵)不在字典中時,可以返回默認值 None 或者設置的默認值。
dict[key] 在 key(鍵)不在字典中時,會觸發 KeyError 異常。
my_csdn = {
'My_CSDN': {
'url': 'https://blog.csdn.net/m0_70885101?spm=1000.2115.3001.5343'}}
res = my_csdn.get('My_CSDN', {
}).get('url')
print(str(res))
https://blog.csdn.net/m0_70885101?spm=1000.2115.3001.5343
2、setfefault()
方法
setdefault() 方法和 get() 方法類似, 如果鍵不存在於字典中,將會添加鍵並將值設為默認值。
語法
dictionary.setdefault(keyname, value)
參數值
實例
info = {
'name': 'pink', 'age': 21}
print(info.setdefault('age', None))
print(info.setdefault('sex', '男'))
print(info)
21
男
{
'name': 'pink', 'age': 21, 'sex': '男'}
1、items()
方法
items() 方法以列表返回視圖對象,是一個可遍歷的 key/value 鍵值對。
語法
dictionary.items()
參數值
無參數
實例
info = {
'name': 'pink', 'age': 21}
print(info.items())
dict_items([('name', 'pink'), ('age', 21)])
當字典中的項目值發生改變時,視圖對象也會更新。
2、keys()
方法
keys() 方法返回一個視圖對象。
語法
dictionary.keys()
參數值
無參數
實例
info = {
'name': 'pink', 'age': 21}
print(info.keys())
dict_keys(['name', 'age'])
當在字典中添加項目時,視圖對象也會更新。
3、values()
方法
values() 方法返回一個視圖對象。
語法
dictionary.values()
參數值
無參數
實例
info = {
'name': 'pink', 'age': 21}
print(info.values())
dict_values(['pink', 21])
當字典中的值改變時,視圖對象也會更新.
4、items()
、keys()
和 values
聯系
dict.keys() 、dict.values() 和 dict.items() 返回的都是視圖對象( view objects),提供了字典實體的動態視圖,這就意味著字典改變,視圖也會跟著變化。
視圖對象不是列表,不支持索引,可以使用 list() 來轉換為列表。
我們不能對視圖對象進行任何的修改,因為字典的視圖對象都是只讀的。
以上就是本文的全部內容啦!如果對您有幫助,麻煩點贊啦!收藏啦!歡迎各位評論區留言!!!
最後編輯於:2022/7/24 18:19