(11)基本對象類型--元組、字典定義、訪問及修改(P1)

1. 基本對象類型(python里面一切皆是對象)

(接前文)


1.6 元組

? 不可變的列表被稱為元組,區別是用小括號包含。元組的元素不能修改,但可以對整個元組進行重新賦值。

? 元組也是序列,因此對元組的遍歷、讀取某個元素、切片等操作,和列表、和字符串相同。

? 特別提醒:若元組中只有一個元素時,元素后面需要加一個半角的英文逗號。

示例:

>>> a = (3) #沒有逗號

>>> type(a) #輸出<class 'int'>,不是tuple類型

>>> a = (3,) #元組

>>> type(a) #輸出<class 'tuple'>,是tuple類型


1.7 字典

1.7.1 字典定義

? 字典是一系列鍵值對。每個鍵都與一個值相關聯,可以使用鍵來訪問與之相關聯的值。鍵和值之間用冒號分隔,而鍵值對之間用逗號分隔。與鍵相關聯的值可以是數字、字符串、列表乃至字典。事實上,可將任何Python對象用作字典中的值。

? 字典用放在花括號{} 中的一系列鍵值對表示。

? 鍵必須是唯一的,不允許重復的鍵。值可以重復。

? 值可以取任何數據類型,但鍵必須是不可變的,如字符串,數字或元組,可變類型如列表不可以作為鍵。示例:

>>> d = {1:'a',2:'b',(3,4):'c'}? #有效的字典定義,元組可以作為鍵

>>> d = {1:'a',2:'b',[3,4]:'c'}? #錯誤的字典定義,列表不能作為鍵

? 字典是一種動態結構,可隨時在其中添加鍵值對。

? 字典中各個鍵值對無次序關系。


1.7.2 訪問及修改字典

1.7.2.1 訪問字典中的值

要獲取與鍵相關聯的值,可指定字典名和放在方括號內的鍵。示例:

>>>d1 = {'name': 'xiaoming', 'age': 15}

>>>d1['age'] #輸出15

>>>d1['sex']? #系統拋出異常,可以采用get()方法。


1.7.2.2 添加鍵值對

要添加鍵值對,可依次指定字典名、用方括號括起的鍵和相關聯的值。示例:

>>> d1['hobby']=['swiming','reading','football']

>>> d1? 輸出:{'name': 'xiaoming', 'age': 15, 'hobby': ['swiming', 'reading', 'football']}


1.7.2.3 修改字典中的值

與新增鍵值對格式相同。示例:

>>> d1['hobby']=['swiming','reading']? #修改鍵'hobby'對應的值,原來為 ['swiming', 'reading', 'football']}

>>> d1 #輸出 {'name': 'xiaoming', 'age': 15, 'hobby': ['swiming', 'reading']}


1.7.2.4 刪除鍵值對

使用del 語句指定字典名和要刪除的鍵,將相應的鍵—值對徹底刪除。示例:

>>> del d1['age']? #刪除鍵為'age'的鍵值對

>>> d1? #輸出{'name': 'xiaoming', 'hobby': ['swiming', 'reading']}

>>> del d1? #刪除字典


1.7.3 字典復制三種方式 (賦值引用、copy、deepcopy)

1) 賦值引用

>>> dict1 = {'Name': 'xiaoming', 'Age': 7, 'Class': 'First'}

>>> dict2 = dict1? #賦值引用,數據只有一份

>>> id(dict1)? #存放數據的內存地址50401344

>>> id(dict2) #內存地址 50401344未變,指向同一份數據

2) copy(淺拷貝)

二份數據。對簡單數據類型的元素會復制數據,復雜數據類型的元素只復制地址引用。

語法、使用方式已經功能與列表的copy相同。示例:

>>> dict1 = {'Name': 'xiaoming', 'Age': 7, 'Class': 'First'}

>>> dict2 = dict1.copy()

3) deepcopy(深拷貝)

使用方法與列表的深拷貝相同。

復制所有數據,包括簡單數據類型元素和復雜數據類型元素。使用方法與列表的深拷貝相同。示例:

>>> dict2 = copy.deepcopy(dict1)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容