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

Python 字典dict詳解(超詳細)

編輯:Python

文章目錄

  • Python內置函數/方法詳解—字典dict
    • 1、創建字典
      • 1.1 字典鍵的特性
    • 2、訪問字典值
      • 2.1 直接訪問
      • 2.2 for循環遍歷
      • 2.3 檢查鍵是否存在
      • 2.4 嵌套字典
    • 3、內置函數
      • 3.1 打印輸出 print()
      • 3.2 確定字典項目 len()
      • 3.3 返回變量類型 type()
      • 3.4 刪除字典 del
      • 3.5 轉換成字符串 str()
    • 4、內置方法
      • 4.1 刪除 pop()、popitem()、clear()、del函數
      • 4.2 復制更新 copy()、update()
      • 4.3 返回指定鍵值 fromkeys()
      • 4.4 取值 get()、setdefault()
      • 4.5 取鍵/值 items()、keys()、values()
    • 5、總結

Python內置函數/方法詳解—字典dict

字典是一個無序可變有索引的集合。在 Python 中,字典用花括號編寫,擁有

1、創建字典

在Python中,我們可以使用 {} 或者 dict() 函數來創建字典。

1、使用 {}

  • 使用大括號 {} 創建空字典
empty_dict = {
}
  • 字典的每個鍵值 key: value 用冒號 : 分割,且每個對之間用逗號 , 分割,整個字典包括在花括號 {} 中,格式如下:
d = {
key1: value1, key2: value2, key3: value3}

注意:dict 作為Python的關鍵字和內置函數,變量名不建議命名為 dict

2、使用dict()

  • 使用 dict() 創建空字典
empty_dict = dict()
  • 使用 dict() 創建非空字典
notEmpty_dict = dict(name='xm', gender=True, age=21)

在使用 dict() 創建字典時,在小括號 () 內要以 key=value 的形式編寫。

1.1 字典鍵的特性

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

repeat_dict = {
'name': 'xm', 'gender': True, 'name': 'pink'}
print(repeat_dict) # {'name': 'pink', 'gender': True}

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

error_dict = {
['name']: 'pink', 'age': 21}
print(error_dict)

當字典的鍵使用列表時,會報錯TypeError: unhashable type: 'list'

2、訪問字典值

2.1 直接訪問

如果想要訪問某一個鍵所對應的值,直接將相應的鍵放入到 [] 內,如下實例:

not_dict = {
'name': 'xm', 'gender': True, 'age': 21, 178: 65}
print(not_dict['name'])
print(not_dict[178])

2.2 for循環遍歷

循環遍歷字典時,返回值是字典的鍵,但也有返回值的方法。

info_dict = {
'name': 'xm', 'gender': True, 'age': 21}
  • 逐個打印字典中的所有鍵名
for key in info_dict:
print(key)
  • 逐個打印字典中的所有
for key in info_dict:
print(info_dict[key])
  • 通過使用 value() 方法返回字典的
for key in info_dict.values():
print(key)
  • 通過使用 items() 方法遍歷鍵和值
for key, value in info_dict.items():
print(key, value)

2.3 檢查鍵是否存在

要確定字典中是否存在指定的鍵,使用 in 關鍵字:

info_dict = {
'name': 'xm', 'gender': True, 'age': 21}
print('name' in info_dict)

如果字典中存在指定的鍵,則返回 True ,反之返回 False

2.4 嵌套字典

字典也可以包含許多字典,這被稱為嵌套字典

  • 創建包含三個字典的字典
my_family = {

'child1': {

'name': 'Phoebe Adele',
'birth': 2002
},
'child2': {

'name': 'Jennifer Katharine',
'birth': 1996
},
'child3': {

'name': 'Rory John',
'birth': 1999
}
}

或者,如果你想嵌套三個已經作為字典存在的字典。

  • 創建三個字典,然後創建一個包含其他三個字典的字典
child1 = {

'name': 'Phoebe Adele',
'birth': 2002
}
child2 = {

'name': 'Jennifer Katharine',
'birth': 1996
}
child3 = {

'name': 'Rory John',
'birth': 1999
}
my_family = {

'child1': child1,
'child2': child2,
'child3': child3
}

3、內置函數

3.1 打印輸出 print()

1、print()函數

print() 函數的功能我們已經非常熟悉了,就是打印輸出。

info_dict = {
'name': 'xm', 'gender': True, 'age': 21}
print(info_dict)

輸出:

{
'name': 'xm', 'gender': True, 'age': 21}

3.2 確定字典項目 len()

2、len()函數

當我們要確定一個字典有多少項目(鍵值對),可以使用 len() 函數。

info_dict = {
'name': 'xm', 'gender': True, 'age': 21}
print(len(info_dict))

輸出結果:

3

使用 len() 函數返回的結果,意為有多少個鍵值對(即多少個 key: value)。

3.3 返回變量類型 type()

3、type()函數

使用 type() 函數可以確定一個變量是什麼類型(字符串、列表、元組、字典或集合)。

info_dict = {
'name': 'xm', 'gender': True, 'age': 21}
print(type(info_dict))

輸出結果:

<class 'dict'>
  1. 當對 info_dict = {key: value} 使用 type() 返回變量類型時,會輸出 <class 'dict'> ,表明這是一個字典
  2. 當對 info_set = {key, key} 使用 type() 返回變量類型時,會輸出 <class 'set'> ,表明這是一個集合

3.4 刪除字典 del

4、del函數

del 關鍵字的作用是完全刪除字典(和下述要說的清空字典並不一樣)

info_dict = {
'name': 'xm', 'gender': True, 'age': 21}
del info_dict
print(info_dict)

注意: 當我們使用 del 刪除某字典後,再使用 print() 函數打印輸出時,會報一個錯誤 NameError: name 'info_dict' is not defined ,意為該字典並未被創建,注意和清空字典相區分。

3.5 轉換成字符串 str()

5、str()函數

str() 的作用就是將一個字典轉換成字符串,以便後續的操作。

info_dict = {
'name': 'xm'}
info_str = str(info_dict)
print(type(info_str)) # <class 'str'>

如果我們對上述轉換後的字符串打印輸出的話。會返回 {'name': 'xm'} ,但此時這只是一個字符串並不存在鍵值對

4、內置方法

4.1 刪除 pop()、popitem()、clear()、del函數

1、pop()方法

pop() 方法從字典中刪除指定的項目,被刪除的項目的值是這個 pop() 方法的返回值。

語法

dictionary.pop(key, default)

參數值

參數描述key必需。需要刪除項目的鍵名。default可選。返回值,假如指定的鍵不存在。如果未指定此參數,且未找到擁有指定鍵的項目,則會引發錯誤。

實例

info = {
'name': 'pink', 'gender:': True, 'age': 21}
print(info)
  • 如果 key 存在 - 刪除字典中對應的元素
info.pop('name')
print(info)
{
'gender:': True, 'age': 21}
  • 如果 key 不存在 - 返回設置指定的默認值 default
error = info.pop('nickname', 'key不存在')
print(error)
key不存在
  • 如果 key 不存在且默認值 default 沒有指定 - 觸發 KeyError 異常:KeyError: 'nickname'

2、popitem()方法

popitem() 方法隨機返回並刪除字典中的最後一對鍵和值。如果字典已經為空,卻調用了此方法,就報出 KeyError 異常。

語法

dictionary.popitem()

參數值

無參數

實例

info = {
'name': 'pink', 'gender:': True, 'age': 21}
print(info)
info.popitem()
print(info)
{
'name': 'pink', 'gender:': True, 'age': 21}
{
'name': 'pink', 'gender:': True}

3、clear()方法

clear() 方法用於刪除字典內所有元素。

語法

dictionary.clear()

參數值

無參數

實例

info = {
'name': 'pink'}
info.clear()
print(info)
{
}

4、del函數

del 函數可用於刪除某一特定的鍵值對。

info = {
'name': 'pink', 'gender': True}
print(info)
del info['name']
print(info)
{
'name': 'pink', 'gender': True}
{
'gender': True}

5、clear()方法和del函數區別

clear() 方法:清空字典(即刪除字典內所有鍵值對),執行結束後,使用 print() 打印時,輸出 {} ,說明字典還存在,只是一個空字典

del 函數:刪除字典(即刪除所有鍵值對以及字典),執行結束後,使用 print() 打印時,會報錯 NameError: name 'info' is not defined ,表明該字典未被定義,即已不存在字典。

4.2 復制更新 copy()、update()

1、copy()方法

copy() 方法返回一個字典的淺復制。

語法

dictionary.copy()

參數值

無參數

實例

info = {
'name': 'pink', 'gender': True}
co = info.copy()
print(co)
{
'name': 'pink', 'gender': True}

2、update()方法

update() 方法把字典參數 dict2 的 key/value(鍵/值) 對更新到字典 dict 裡。

語法

dictionary.update(iterable)

參數值

參數描述iterable具有鍵值對的字典或可迭代對象,會被插入到字典中。

實例

info_1 = {
'name': 'pink'}
info_2 = {
'age': 21}
info_1.update(info_2)
print(info_1)
{
'name': 'pink', 'age': 21}

3、直接更新

可以通過引用鍵名來更改特定項的值:

info = {
'name': 'xm'}
  • 若引用的鍵存在於原字典中,則會修改原鍵對應的值
info['name'] = 'pink'
print(info)
{
'name': 'pink'}
  • 若引用的鍵不存在於原字典中,則會直接添加到原字典中
info['gender'] = True
print(info)
{
'name': 'xm', 'gender': True}

4.3 返回指定鍵值 fromkeys()

fromkeys() 方法用於創建一個新字典,以序列 keys 中元素做字典的鍵,value 為字典所有鍵對應的初始值。

語法

dict.fromkeys(keys, value)

參數值

參數描述keys必需。指定新字典鍵的可迭代對象。value可選。所有鍵的值。默認值是 None。

實例

  • value 不指定值
keys = {
'A', 'B'}
this_dict = dict.fromkeys(keys)
print(this_dict)
{
'A': None, 'B': None}
  • value 指定值
keys = {
'A', 'B'}
this_dict = dict.fromkeys(keys, 10)
print(this_dict)
{
'A': 10, 'B': 10}

4.4 取值 get()、setdefault()

1、get()方法

get() 方法返回具有指定鍵的項目值。

語法

dictionary.get(keyname, value)

參數值

參數描述keyname必需。您要從中返回值的項目的鍵名。value可選。如果指定的鍵不存在,則返回一個值。默認值 None。

實例

  • get() 用法
info = {
'name': 'pink', 'age': 21}
print(info.get('age'))
# 沒有設置 Sex,也沒有設置默認的值,輸出 None
print(info.get('sex'))
# 沒有設置 Salary,輸出默認的值 0.0
print(info.get('salary', 0.0))
21
None
0.0
  • get() 方法 VSdict[key] 訪問元素區別

get(key) 方法在 key(鍵)不在字典中時,可以返回默認值 None 或者設置的默認值。

dict[key] 在 key(鍵)不在字典中時,會觸發 KeyError 異常。

  • 嵌套字典使用
my_csdn = {
'My_CSDN': {
'url': 'https://blog.csdn.net/m0_70885101?spm=1000.2115.3001.5343'}}
res = my_csdn.get('My_CSDN', {
}).get('url')
print(str(res))
https://blog.csdn.net/m0_70885101?spm=1000.2115.3001.5343

2、setfefault()方法

setdefault() 方法和 get() 方法類似, 如果鍵不存在於字典中,將會添加鍵並將值設為默認值。

語法

dictionary.setdefault(keyname, value)

參數值

參數描述keyname必需。您要從中返回值的項目的鍵名。value可選。如果鍵存在,則此參數無效。如果鍵不存在,則此值將成為鍵的值。默認值 None。

實例

info = {
'name': 'pink', 'age': 21}
print(info.setdefault('age', None))
print(info.setdefault('sex', '男'))
print(info)
21
男
{
'name': 'pink', 'age': 21, 'sex': '男'}

4.5 取鍵/值 items()、keys()、values()

1、items()方法

items() 方法以列表返回視圖對象,是一個可遍歷的 key/value 鍵值對。

語法

dictionary.items()

參數值

無參數

實例

info = {
'name': 'pink', 'age': 21}
print(info.items())
dict_items([('name', 'pink'), ('age', 21)])

當字典中的項目值發生改變時,視圖對象也會更新。

2、keys()方法

keys() 方法返回一個視圖對象。

語法

dictionary.keys()

參數值

無參數

實例

info = {
'name': 'pink', 'age': 21}
print(info.keys())
dict_keys(['name', 'age'])

當在字典中添加項目時,視圖對象也會更新。

3、values()方法

values() 方法返回一個視圖對象。

語法

dictionary.values()

參數值

無參數

實例

info = {
'name': 'pink', 'age': 21}
print(info.values())
dict_values(['pink', 21])

當字典中的值改變時,視圖對象也會更新.

4、items()keys()values 聯系

dict.keys()dict.values()dict.items() 返回的都是視圖對象( view objects),提供了字典實體的動態視圖,這就意味著字典改變,視圖也會跟著變化。

視圖對象不是列表,不支持索引,可以使用 list() 來轉換為列表。

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

5、總結

函數描述print()打印輸出len()計算字典鍵值對type()返回變量類型del刪除字典str()以可打印的字符串表示方法描述pop(key[,default])刪除字典 key(鍵)所對應的值,返回被刪除的值popitem()返回並刪除字典中的最後一對鍵和值clear()刪除字典內所有元素copy()返回一個字典的淺復制update(dict2)將字典dict2的鍵/值對更新到dict裡fromkeys()創建一個新字典,以序列seq中元素做字典的鍵,val為所有鍵對應的初始值get(key, default=None)返回指定鍵的值,如果鍵不在字典中返回 default 設置的默認值setdefault(key, default=None)和get()類似, 但如果鍵不存在於字典中,將會添加鍵並將值設為defaultitems()返回包含每個鍵值對的元組的列表keys()返回包含字典鍵的列表values()返回字典中所有值的列表

以上就是本文的全部內容啦!如果對您有幫助,麻煩點贊啦!收藏啦!歡迎各位評論區留言!!!

最後編輯於:2022/7/24 18:19


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