字典的基本操作


字典是Python中常用的一種數據存儲結構,它是由”鍵-值“對組成,每個”鍵-值“對稱為一個元素,每個元素表示一種映射或對應關系。其中,”鍵“可以是Python中任意不可變數據,如整數、實數、復數、字符串、元組等類型,但不能使用列表、集合、字典或其他可變類型作為字典的”鍵“,”值“可以取任意數據類型。

一、字典的創建

字典的創建有3種方式:

1.直接賦值創建字典

直接賦值創建字典的一般格式為:

變量名 = {鍵1:值1,鍵2:值2,鍵3:值3,...}

字典的元素放在大括號中,元素之間用逗號分隔,”鍵“與”值“之間用冒號分隔。

>>> stu = {'name':'張三','num':'20012101','sex':'female'}
>>> stu
{'name': '張三', 'num': '20012101', 'sex': 'female'}

tips:字典中元素打印出來的順序與創建時的順序不一定相同,這是因為字典中各個元素並沒有前后順序。

2.使用內置函數dict()創建字典

字典除了可以通過上述直接賦值的方法創建外,還可以用內置函數dict()通過其他”字典“、”(鍵,值)“對的序列或關鍵字參數來創建。

stu1 = {'num': '20190101', 'name': '張三', 'sex': 'male'}	# 直接賦值創建字典
stu2 = dict(stu1)	# 通過其他字典創建
stu3 = dict([('num', '20190101'), ('name', '張三'), ('sex', 'male')])	# 通過”(鍵,值)“對的序列創建
stu4 = dict(num='20190101', name='張三', sex='male')	# 通過關鍵字參數創建
stu5 = dict(zip(['num', 'name', 'sex'], ['20190101', '張三', 'male']))	# 通過dict和zip結合創建
if stu1 == stu2 == stu3 == stu4 == stu5:	# 判斷五個變量是否相同
    print('創建的5種方式相同')
else:
    print("創建字典的5種方式不相同")

輸出結果為:

創建的5種方式相同

tips:zip()函數將可迭代的對象作為參數,將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的zip對象。

點這看zip() 函數詳解

3.使用fromkeys()方法創建字典

在Python中,當所有鍵對應同一個值時,可使用fromkeys()方法創建字典。

語法格式為:

dict.fromkeys(seq[,value])

其中,seq為字典”鍵“值列表;value為設置鍵序列(seq)的值,省略時默認為None。

>>> stu_age = dict.fromkeys(['zhangsan','lisi','wangwu'],18)	# 創建字典,“鍵”值默認為18
>>> stu_age
{'zhangsan': 18, 'lisi': 18, 'wangwu': 18}
>>> stu_age = dict.fromkeys(['zhangsan','lisi','wangwu'])	# 創建字典,“鍵”值默認為None
>>> stu_age
{'zhangsan': None, 'lisi': None, 'wangwu': None}

tips:字典中的”鍵“是唯一的,創建字典時若出現”鍵“相同的情況,則后定義的”鍵-值“對將覆蓋先定義的”鍵-值“對。

二、字典的訪問

字典訪問是根據指定”鍵“訪問其對應的”值“,常見的訪問方式有以下兩種:

根據鍵訪問值

字典中的每個元素表示一種映射關系,將提供的”鍵“作為下標可以訪問對應的”值“,如果字典中不存在這個”鍵“則會拋出異常。

語法格式為:

字典變量名[鍵]

>>> stu = {'name':'zhangsan','num':'20190101','sex':'male'}
>>> stu['name']	# 根據name訪問姓名
'zhangsan'
>>> stu['num']
'20190101'
使用get()方法訪問值

在訪問字典時,若不確定字典中是否有某個鍵,可通過get()方法進行獲取,若該鍵存在,則返回其對應的值,若不存在,則返回默認值。

語法格式如下:

dict.get(key[,default=None])

其中,dict為被訪問字典名;key是要查找的鍵;default定義默認值,如果指定鍵的值不存在,返回該默認值;當default為空時,返回None。

>>> stu.get('name')	# get()獲取學生姓名
'zhangsan'
>>> stu.get('age')	# get()獲取學生年齡,返回值為None
>>> print(stu.get('age'))	# 輸出返回值None
None
>>> stu.get('age',18)	# 設置返回默認值為18
18

三、修改和添加元素

當以指定”鍵“為下標為字典元素賦值時,有兩種含義:

(1)若該”鍵“在字典中存在,則表示修改該”鍵“對應的值;

(2)若該”鍵“在字典中不存在,則表示添加一個新的”鍵-值“對,也就是添加一個新元素到字典中。

>>> s = {0:'0',1:'1',2:'2'}
>>> s[0]='python'
>>> s
{0: 'python', 1: '1', 2: '2'}
>>> s[3]='love'
>>> s
{0: 'python', 1: '1', 2: '2', 3: 'love'}

tips:數字作為鍵不用加引號表示。

四、刪除元素

要刪除字典中的元素或整個字典,可以使用del命令、clear()、pop()和popitem()方法。

1)del命令

del命令可根據”鍵“刪除字典中的元素。

>>> s = {'a':'I','b':'love','c':'python'}
>>> del s['a']	# 刪除a及其值
>>> s
{'b': 'love', 'c': 'python'}
2)clear()方法

clear()方法用於清除字典中的所有元素,語法格式為:

dict.clear()

其中,dict為要被清空的字典名;該方法中不含參數,也沒有返回值。

>>> s = {0:'I',1:'love',2:'python'}
>>> s.clear()	# 清空字典
>>> s
{}
3)pop()方法

pop()方法用於獲取指定”鍵“的值,並將這個”鍵-值“對從字典中移除。其語法格式為:

dict.pop(key[,default])

其中,dict為要被刪除元素的字典名;key是要被刪除的鍵;default是默認值,當字典中沒有要被刪除的key時,該方法返回指定的默認值。

>>> s = {'name':'zhangsan','age':'17'}
>>> s.pop('age')	# 返回並刪除age"鍵-值"對
'17'
>>> s.pop('age',18)	# 無指定鍵,返回默認值18
18
4)popitem()方法

popitem()方法用於隨機獲取一個”鍵-值“對,並將其刪除。其語法格式為:

dict.popitem()

其中,dict為要被刪除元素的字典名;該方法無參數,返回值為一個隨機的”鍵-值“對。

>>> s = {0:'apple',1:'banana',2:'pear'}
>>> s.popitem()	# 隨機返回某”鍵-值“對並刪除
(2, 'pear')
>>> s
{0: 'apple', 1: 'banana'}

五、刪除字典

使用update()方法可以將新字典的”鍵-值“對一次性全部添加到當前字典中,如果兩個字典中存在相同的”鍵“,則以新字典中的”值“為准更新當前字典。其語法格式為:

dict.update(dict2)

其中,dict為當前字典,dict2為新字典。

>>> s = {0:'apple',1:'banana',2:'pear'}
>>> s.update({3:'peach',1:'a'})	# 修改1的值,同時增加新元素
>>> s
{0: 'apple', 1: 'a', 2: 'pear', 3: 'peach'}

六、復制字典

復制字典可調用copy()方法,copy()方法返回字典的淺復制。其語法格式為:

dict.copy()

其中,dict為需要復制的字典,該方法無參數,返回值為一個新字典。

>>>s = {'a':'apple','b':'banana'}
>>> s.copy()
{'a': 'apple', 'b': 'banana'}

tips:在Python3中,可以用三種方法復制字典:直接賦值、淺復制和深復制。

(1)直接賦值:對象的引用

(2)淺復制(copy()方法):拷貝父對象,引用對象內部的子對象

(3)深復制(deepcopy()方法):copy模塊的deepcopy()方法,完全復制父對象及其子對象。

點此查看Python 直接賦值、淺拷貝和深度拷貝解析

七、字典的遍歷

遍歷字典的”鍵-值“對

遍歷字典中所有的”鍵-值“對需要用到items()方法,該方法以列表形式返回可遍歷的”(鍵,值)“元組。其語法格式為:

dict.items()

其中,dict表示字典名,該方法沒有參數。

>>> a = {'mary':'C','lina':'A','lisa':'B'}
>>> a.items()	
dict_items([('mary', 'C'), ('lina', 'A'), ('lisa', 'B')])
遍歷字典中所有的鍵

當不需要遍歷字典中的值時,可使用keys()只需要遍歷字典中的鍵,該方法以列表返回一個字典中所有的鍵。其語法格式為:
dict.keys()

其中,dict表示字典名,該方法沒有參數。

>>> a = {'mary':'C','lina':'A','lisa':'B'}
>>> a.keys()
dict_keys(['mary', 'lina', 'lisa'])
遍歷字典中所有的值

當只關心字典所包含的值時,可使用values()方法,該方法以列表形式返回字典中所有的值。其語法格式為:

dict.values()

其中,dict表示字典名,該方法沒有參數。

>>> a = {'mary':'C','lina':'A','lisa':'B'}
>>> a.values()
dict_values(['C', 'A', 'B'])


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM