目錄
9.1.1 理解字典類型
9.1.2 字典的類型名
9.1.3 字典的定義
9.1.4 字典的主要性質
9.1.5?好好學習,天天向上
9.1.1 理解字典類型
在日常生活中,我們常常會接觸到“字典”這種數據類型,例如一本書籍的目錄結構,在目錄結構中,通過查找頁碼,就可以快速翻到指定的頁面。
如果沒有這樣的頁碼,那么我們必須從書籍的第一頁開始,一頁一頁地查找。有了頁碼以后,直接翻到指定的頁面。在Python中,可以通過字典來進行快速地查找。
Python中的字典類型是用{}符號括住的一個數據集合,集合中的元素以英文逗號進行分隔。
字典中的元素是一個鍵值對:
# 定義一個字典變量bookbook = {"第十二章-徹底掌握Python的字典類型": 210}
在上文代碼中定義了一個字典類型變量book, book中只有一個元素。元素以英文冒號進行分隔。在冒號左邊的為鍵名,冒號右邊的為鍵值。book中的鍵名表示書籍的章節目錄名稱,鍵值表示章節目錄的頁碼。字典中的鍵名是唯一的,就如同在一本書籍中,不會出現相同的目錄。
字典中的鍵名是唯一的,在列表和元組中可以保存多個相同的元素值。
9.1.2 字典的類型名
在交互模式中通過type來輸出字典的類型名:
>>> book = {"第十二章-徹底掌握Python的字典類型": 210}
>>> type(book)
<class 'dict'>
從輸出可知,字典的類型名為dict。
9.1.3 字典的定義
對字典進行定義,主要有對象定義法和直接定義法。
(1) 對象定義法
字典的類型名是dict,可以直接在交互模式中執行help(dict)來查找dict的定義及用法:
class dict(object)
| ?dict() -> new empty dictionary
| ?dict(mapping) -> new dictionary initialized from a mapping object's
| ? ? ?(key, value) pairs
| ?dict(iterable) -> new dictionary initialized as if via:
| ? ? ?d = {}
| ? ? ?for k, v in iterable:
| ? ? ? ? ?d[k] = v
| ?dict(**kwargs) -> new dictionary initialized with the name=value pairs
| ? ? ?in the keyword argument list. ?For example: ?dict(one=1, two=2)
從交互模式的輸出中,可看到如下四個定義字典的構造方法:
(1) dict()
(2) dict(mapping)
(3) dict(iterable)
(4) dict(**kwargs)
1.dict()
使用dict()構造一個空的字典。
代碼實例:
# __desc__ = 通過dict()構造一個空的字典
# 定義一個空的字典
book = dict() # 空值在條件判斷中會自動轉換為布爾類型Falseif book: print("book is not empty")
else: print("book is empty")
2. dict(mapping)
使用mapping對象中的(key, value)鍵值對來構造一個有值的字典對象。mapping對象是一個從鍵名到鍵值的映射對象。在Python中可以通過zip類型構造一個mapping格式的對象,給zip構造方法傳遞兩個可迭代對象,例如:zip(iter1, iter2), 左邊的可迭代對象iter1表示的是鍵名,右邊的可迭代對象iter2表示的是鍵值,iter1中的鍵名與iter2中的鍵值一一對應。
代碼實例:
# __desc__ = 使用zip類型來定義一個mapping對象
# zip接受兩個可迭代對象
# 元組是一種可迭代對象
# 迄今學過的可迭代對象有字符串,列表,元組mapping = zip(("第十二章-徹底掌握Python的字典類型",), (210,))
# 使用mapping對象來構造字典對象
book = dict(mapping)
# book的輸出為{"第十二章-徹底掌握Python的字典類型": 210}
Python中的字典類型就是一種標準的mapping對象,我們可以在dict方法中傳遞一個字典對象來構造字典。
代碼實例:
# __desc__ = 使用字典類型來構造一個mapping對象
pair = {"第十二章-徹底掌握Python的字典類型": 210}
# 使用mapping對象來構造字典對象
book = dict(pair)
# book的輸出為{"第十二章-徹底掌握Python的字典類型": 210}
3. dict(iterable)
這里的iterable表示的是可迭代對象,可迭代對象存儲了每一個鍵值對,鍵值對以列表或元組的形式存儲于這個可迭代對象中。可迭代對象既可以是列表,也可以是元組。可迭代對象是列表的情況:
# 1.列表中保存的是列表
[[key, value],[key,value]]
# 2.列表中保存的是元組
[(key, value),(key,value)]
可迭代對象是元組的情況:# 1.元組中保存的是列表:
([key, value],[key,value])
# 2.元組中保存的是元組:
((key, value),(key,value))
代碼實例:
# __desc__ = 通過可迭代對象來構造字典
book = dict([["第十二章-徹底掌握Python的字典類型", 20]])
# book的輸出為{"第十二章-徹底掌握Python的字典類型": 210} book = dict((("第十二章-徹底掌握Python的字典類型", 20),))
# book的輸出為{"第十二章-徹底掌握Python的字典類型": 210}
4.dict(**kwargs)
這種構造方式是直接采用name=value的關鍵字參數形式來對字典進行構造,name表示的是鍵名,value表示的是鍵值,name必須符合變量名的規則, value必須是Python中的合法數據類型。
代碼實例:
# 在dict構造方法中,name=value即表示一個鍵值對
book = dict(name="108節課徹底學通Python")
# book的輸出為{"name": "108節課徹底學通Python"}
(2) 直接定義法
直接定義法是指直接通過字典的別名符號{}來進行定義。在{}中,鍵值對以英文逗號進行分隔。
代碼實例:
# __desc__ = 直接通過{}來構造字典
# 構造一個空的字典
book = {} # 構造一個有值的字典
book = {"name": "108節課徹底學通Python", "price": 0}
9.1.4 字典的主要性質
字典跟列表一樣,都是可變的數據類型。同時字典也是一種可迭代類型,可在for循環中迭代字典的鍵名。迭代字典對象的for循環結構:
for name in dict: pass
代碼實例:
# __desc__ = 在for循環中迭代字典的鍵名
# 構造一個有值的字典
book = {"name": "108節課徹底學通Python", "author": "薯條老師"}
for name in book: # 執行dict[name]的語法,可以訪問字典的鍵值 print(name, book[name])
9.1.5?好好學習,天天向上
跟薯條老師學高級爬蟲(JS逆向+安卓逆向),數據分析,數據科學,金融量化交易,以及機器學習+深度學習+大模型算法。堅持下去,你一定會成為高手。
薯條老師的學生在南方電網,林氏家居,京東,阿里等大廠。薯條老師的個人技術博客:Python神仙級入門教程-零基礎學習數據分析,高級爬蟲,機器學習+大模型算法。對本節教程有任何不懂的同學,亦可在評論區中進行評論。