2021-3-23 日報部落格
個人部落格
1.學到的東西
Python 3 教程
Python3 教程Python3 簡介Python3 環境搭建Python3 基礎語法Python3 基本資料型別Python3 直譯器Python3 註釋Python3 運算子Python3 數字(Number)Python3 字串Python3 列表Python3 元組Python3 字典Python3 集合Python3 程式設計第一步Python3 條件控制Python3 迴圈語句Python3 迭代器與生成器Python3 函式Python3 資料結構Python3 模組Python3 輸入和輸出Python3 FilePython3 OS
Python3 高階教程
Python3 正則表示式Python3 CGI程式設計Python3 MySQL(mysql-connector)Python3 MySQL(PyMySQL)Python3 網路程式設計Python3 SMTP傳送郵件Python3 多執行緒Python3 XML 解析Python3 JSONPython3 日期和時間Python3 內建函式Python3 MongoDBPython3 urllibPython uWSGI 安裝配置
Python3 字典
字典是另一種可變容器模型,且可儲存任意型別物件。
字典的每個鍵值 key=>value 對用冒號 : 分割,每個對之間用逗號(,)分割,整個字典包括在花括號 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2, key3 : value3 }
鍵必須是唯一的,但值則不必。
值可以取任何資料型別,但鍵必須是不可變的,如字串,數字。
一個簡單的字典例項:
dict = {'name': 'runoob', 'likes': 123, 'url': 'www.runoob.com'}
也可如此建立字典:
dict1 = { 'abc': 456 }
dict2 = { 'abc': 123, 98.6: 37 }
訪問字典裡的值
把相應的鍵放入到方括號中,如下例項:
例項
#!/usr/bin/python3 dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} print ("dict['Name']: ", dict['Name']) print ("dict['Age']: ", dict['Age'])
以上例項輸出結果:
dict['Name']: Runoob
dict['Age']: 7
如果用字典裡沒有的鍵訪問資料,會輸出錯誤如下:
例項
#!/usr/bin/python3 dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} print ("dict['Alice']: ", dict['Alice'])
以上例項輸出結果:
Traceback (most recent call last):
File "test.py", line 5, in <module>
print ("dict['Alice']: ", dict['Alice'])
KeyError: 'Alice'
修改字典
向字典新增新內容的方法是增加新的鍵/值對,修改或刪除已有鍵/值對如下例項:
例項
#!/usr/bin/python3 dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} dict['Age'] = 8 # 更新 Age dict['School'] = "菜鳥教程" # 新增資訊 print ("dict['Age']: ", dict['Age']) print ("dict['School']: ", dict['School'])
以上例項輸出結果:
dict['Age']: 8
dict['School']: 菜鳥教程
刪除字典元素
能刪單一的元素也能清空字典,清空只需一項操作。
顯示刪除一個字典用del命令,如下例項:
例項
#!/usr/bin/python3 dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} del dict['Name'] # 刪除鍵 'Name' dict.clear() # 清空字典 del dict # 刪除字典 print ("dict['Age']: ", dict['Age']) print ("dict['School']: ", dict['School'])
但這會引發一個異常,因為用執行 del 操作後字典不再存在:
Traceback (most recent call last):
File "test.py", line 9, in <module>
print ("dict['Age']: ", dict['Age'])
TypeError: 'type' object is not subscriptable
注:del() 方法後面也會討論。
字典鍵的特性
字典值可以是任何的 python 物件,既可以是標準的物件,也可以是使用者定義的,但鍵不行。
兩個重要的點需要記住:
1)不允許同一個鍵出現兩次。建立時如果同一個鍵被賦值兩次,後一個值會被記住,如下例項:
例項
#!/usr/bin/python3 dict = {'Name': 'Runoob', 'Age': 7, 'Name': '小菜鳥'} print ("dict['Name']: ", dict['Name'])
以上例項輸出結果:
dict['Name']: 小菜鳥
2)鍵必須不可變,所以可以用數字,字串或元組充當,而用列表就不行,如下例項:
例項
#!/usr/bin/python3 dict = {['Name']: 'Runoob', 'Age': 7} print ("dict['Name']: ", dict['Name'])
以上例項輸出結果:
Traceback (most recent call last):
File "test.py", line 3, in <module>
dict = {['Name']: 'Runoob', 'Age': 7}
TypeError: unhashable type: 'list'
字典內建函式&方法
Python字典包含了以下內建函式:
序號 | 函式及描述 | 例項 |
---|---|---|
1 | len(dict) 計算字典元素個數,即鍵的總數。 | >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> len(dict) 3 |
2 | str(dict) 輸出字典,以可列印的字串表示。 | >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> str(dict) "{'Name': 'Runoob', 'Class': 'First', 'Age': 7}" |
3 | type(variable) 返回輸入的變數型別,如果變數是字典就返回字典型別。 | >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> type(dict) <class 'dict'> |
Python字典包含了以下內建方法:
序號 | 函式及描述 |
---|---|
1 | radiansdict.clear() 刪除字典內所有元素 |
2 | radiansdict.copy() 返回一個字典的淺複製 |
3 | radiansdict.fromkeys() 建立一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值 |
4 | radiansdict.get(key, default=None) 返回指定鍵的值,如果鍵不在字典中返回 default 設定的預設值 |
5 | key in dict 如果鍵在字典dict裡返回true,否則返回false |
6 | radiansdict.items() 以列表返回一個檢視物件 |
7 | radiansdict.keys() 返回一個檢視物件 |
8 | radiansdict.setdefault(key, default=None) 和get()類似, 但如果鍵不存在於字典中,將會新增鍵並將值設為default |
9 | radiansdict.update(dict2) 把字典dict2的鍵/值對更新到dict裡 |
10 | radiansdict.values() 返回一個檢視物件 |
11 | [pop(key,default]) 刪除字典給定鍵 key 所對應的值,返回值為被刪除的值。key值必須給出。 否則,返回default值。 |
12 | popitem() 隨機返回並刪除字典中的最後一對鍵和值。 |