程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python字典(dict)的操作方法匯總(約18種操作方法),並附示例代碼

編輯:Python

聲明:博主(昊虹圖像算法)寫這篇博文時,用的Python的版本號為3.9.10。

字典(dict)的格式如下:

dict1 = {
key1 : value1, key2 : value2, key3 : value3 }

從上面的格式我們可以看出:
字典的每個鍵值 key=>value 對用冒號分割,每個對之間用逗號分割,整個字典包括在花括號 {} 中。

另外字典要求鍵必須是唯一的,但值則不必。

目錄

  • 01-字典的創建
    • 01-附1-利用方法fromkeys()配合元組快速生成多鍵值字典
  • 02-字典值的訪問
  • 03-更新字典某個鍵的值、新增鍵值
  • 04-用del語句刪除字典中的鍵值
  • 05-用del語句刪除整個字典
  • 06-用方法clear()清空字典
  • 07-用函數len()統計字典鍵值對的個數
  • 06-用函數str()將字典字符串化
  • 07-使用方法copy()實現字典的深拷貝
  • 08-使用“=”實現字典的淺拷貝
  • 09-使用“in”判斷某鍵是否在字典裡
  • 10-使用方法items()獲得字典鍵和值的視圖對象
  • 11-使用方法keys() 獲得字典鍵的視圖對象
  • 12-使用方法values()獲得字典鍵的值的視圖對象
  • 13-1-使用方法get()返回某鍵的值
  • 13-2-使用方法setdefault()返回某鍵的值(如果鍵不存在,則自動創建)
  • 14-使用方法update()將一個字典的鍵值添加到另一個字典中
  • 15-使用方法pop()刪除某對鍵值,並返回鍵的值
  • 16-使用方法popitem() 刪除最後插入的鍵值,並返回鍵及其值
  • 17-鍵在使用時需要注意的兩點

01-字典的創建

# 創建有內容的字典
dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
# 方法一創建空字典
dict2 = {
}
# 方法二創建空字典
dict3 = dict()

運行結果如下:

01-附1-利用方法fromkeys()配合元組快速生成多鍵值字典

語法如下:

dict.fromkeys(keys, value)

keys —必需。指定新字典鍵的可迭代對象。
value—可選。所有鍵的值。默認值是 None。
第一個示例代碼如下:

x = ('key1', 'key2', 'key3')
y = 0
dict1 = dict.fromkeys(x, y)

運行結果如下:

第二個示例代碼:

x = ('key1', 'key2', 'key3')
y = (61, 62, 63)
dict1 = dict.fromkeys(x, y)

運行結果如下:

注意:key1的鍵值並不是61,而是元組(61, 62, 63),這 一點要注意。

第三個示例代碼:

x = ('key1', 'key2', 'key3')
dict1 = dict.fromkeys(x)

運行結果如下:

02-字典值的訪問

示例代碼如下:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
str1 = dict1['name']
value1 = dict1[123]

運行結果如下:

03-更新字典某個鍵的值、新增鍵值

示例代碼如下:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
k = 1
dict1['name'] = 'wanghong' # 更新鍵name的值
dict1['height'] = 167 # 增加鍵值

運行結果如下:

提問:為什麼中間有插一句語句"k = 1",答案見下面這篇博文:
https://blog.csdn.net/wenhao_ir/article/details/125416514

04-用del語句刪除字典中的鍵值

示例代碼如下:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
del dict1['name']

運行結果如下:

05-用del語句刪除整個字典

示例代碼如下:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
dict2 = {
'name': 'wanghong', 'likes': 'sing', 999: 704}
del dict1

運行結果如下:

06-用方法clear()清空字典

示例代碼如下:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
dict1.clear()

運行結果如下:

07-用函數len()統計字典鍵值對的個數

示例代碼如下:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
len1 = len(dict1)

運行結果如下:

06-用函數str()將字典字符串化

示例代碼如下:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
str1 = str(dict1)
print(str1)

運行結果如下:

07-使用方法copy()實現字典的深拷貝

示例代碼如下:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
dict2 = dict1.copy()
dict1['name'] = 'zhangsan'


從運行結果我們可以看出,方法copy()的確實現的是深拷貝,改變dict1的鍵值並沒有影響到dict2的值。

08-使用“=”實現字典的淺拷貝

示例代碼如下:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
dict2 = dict1
dict1['name'] = 'zhangsan'

運行結果如下:

從上面的運行結果可以看出,dict1鍵值的修改影響了dict2的鍵值,說明二者是共用內存空間的。

09-使用“in”判斷某鍵是否在字典裡

示例代碼如下:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
bool1 = 'name' in dict1
bool2 = 'weight' in dict1

運行結果如下:

10-使用方法items()獲得字典鍵和值的視圖對象

示例代碼如下:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
dict1_items = dict1.items()
print(dict1_items)

運行結果如下:


可見,這個視圖對象就是把字典對象換了一種形式表示。
比如原來的鍵值形式為:

'name': 'suwenhao'

轉換為視圖對象(dict_items)後為下面這樣的形式:

('name', 'suwenhao')

值得注意的是,原鍵值必變,對應的視圖對象也會跟著改變,看一個例子:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
dict1_items = dict1.items()
dict1['name'] = 'zhangsan'
print(dict1_items)

運行結果如下圖所示:

視圖對象可以用函數list()轉換為列表類型,如下面的例子:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
dict1_items = dict1.items()
list1 = list(dict1_items)

運行結果如下:

從上面的結果可以看出,轉換為列表對象後,每一個鍵值是一個元組(tuple)。

關於視圖對象,注意,我們不能對視圖對象進行任何的修改,因為字典的視圖對象都是只讀的。

11-使用方法keys() 獲得字典鍵的視圖對象

示例代碼如下:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
dict1_keys = dict1.keys()
list1 = list(dict1_keys)

運行結果如下:

相關知識和說明請參考“10-使用方法items()獲得字典鍵和值的視圖對象”

12-使用方法values()獲得字典鍵的值的視圖對象

示例代碼如下:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
dict1_values = dict1.values()
list1 = list(dict1_values)

運行結果如下:

相關知識和說明請參考“10-使用方法items()獲得字典鍵和值的視圖對象”

13-1-使用方法get()返回某鍵的值

示例代碼如下:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
str1 = dict1.get('name')

運行結果如下:

13-2-使用方法setdefault()返回某鍵的值(如果鍵不存在,則自動創建)

方法 setdefault()的語法如下:

dict.setdefault(key, default=None)

參數:
key – 查找的鍵值。
default – 鍵不存在時,設置的默認鍵值。
返回值:
如果 key 在 字典中,返回對應的值。如果不在字典中,則插入 key 及設置的默認值 default,並返回 default ,default 默認值為 None。
示例代碼如下:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
str1 = dict1.setdefault('name', 'zhangsan')
str2 = dict1.setdefault('likes', None)
temp1 = dict1.setdefault('weight', None)

運行結果如下:

結果分析:
由於鍵’name’是存在的,所以語句:

str1 = dict1.setdefault('name', 'zhangsan')

並不會改變其鍵值,並且返回了其鍵值‘suwenhao’
由於鍵’weight’是不存在的,所以在字典dict1中新增了鍵’weight’,其值設為None。

14-使用方法update()將一個字典的鍵值添加到另一個字典中

示例代碼如下:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
dict2 = {
'weight': 30}
dict1.update(dict2)

運行結果如下:

15-使用方法pop()刪除某對鍵值,並返回鍵的值

示例代碼如下:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
temp1 = dict1.pop('name')

運行結果如下:

16-使用方法popitem() 刪除最後插入的鍵值,並返回鍵及其值

最後插入的鍵值通常就是末尾鍵值嘛。
示例代碼如下:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456}
temp1 = dict1.popitem()

運行結果如下:

17-鍵在使用時需要注意的兩點

1、不允許同一個鍵出現兩次。創建時如果同一個鍵被賦值兩次,後一個值會被記住,如下實例:

dict1 = {
'name': 'suwenhao', 'likes': 'reading', 123: 456, 'name': 'zhangsan'}
str1 = dict1['name']

運行結果如下:

2、鍵必須不可變,所以可以用數字,字符串或元組充當,而用列表就不行,如下面的語句:

dict1 = {
['name']: 'suwenhao', 'likes': 'reading', 123: 456}

在運行時報錯如下:

參考資料:
https://blog.csdn.net/wenhao_ir/article/details/125100220


  1. 上一篇文章:
  2. 下一篇文章:
相關文章
    没有相关文章
Copyright © 程式師世界 All Rights Reserved