徹底搞懂Python字典

一、字典簡介

  • 字典(dictionary)是包含若干“鍵:值”元素的無序可變序列,字典中的每個元素包含用冒號分隔開的“鍵”和“值”兩部分,表示一種映射或對應關係,也稱關聯數組。
  • 定義字典時,每個元素的“鍵”和“值”之間用冒號分隔,不同元素之間用逗號分隔,所有的元素放在一對大括號“{}”中。
  • 字典中元素的“鍵”可以是Python中任意不可變數據,例如整數、實數、複數、字符串、元組等類型等可哈希數據,但不能使用列表、集合、字典或其他可變類型作爲字典的“鍵”。
  • 字典中的“鍵”不允許重複,“值”是可以重複的

二、字典的創建與刪除

  1. 使用賦值運算符“=”將一個字典賦值給一個變量即可創建一個字典變量。
>>> aDict = {'server': 'db.diveintopython3.org', 'database': 'mysql'}
  1. 也可以使用內置類dict以不同形式創建字典。
>>> x = dict()                               #空字典
>>> type(x)                                  #查看對象類型
<class 'dict'>
>>> x = {}                                   #空字典
>>> keys = ['a', 'b', 'c', 'd']
>>> values = [1, 2, 3, 4]
>>> dictionary = dict(zip(keys, values))     #根據已有數據創建字典
>>> d = dict(name='Dong', age=39)            #以關鍵參數的形式創建字典
>>> aDict = dict.fromkeys(['name', 'age', 'sex'])    #以給定內容爲“鍵”,創建“值”爲空的字典
>>> aDict
{'age': None, 'name': None, 'sex': None}

三、字典元素的訪問

  • 字典中的每個元素表示一種映射關係或對應關係,根據提供的“鍵”作爲下標就可以訪問對應的“值”,如果字典中不存在這個“鍵”會拋出異常。
>>> aDict = {'age': 39, 'score': [98, 97], 'name': 'Dong', 'sex': 'male'}
>>> aDict['age']                     #指定的“鍵”存在,返回對應的“值”
39
>>> aDict['address']                 #指定的“鍵”不存在,拋出異常
KeyError: 'address'
  • 字典對象提供了一個get()方法用來返回指定“鍵”對應的“值”,並且允許指定該鍵不存在時返回特定的“值”。例如:
>>> aDict.get('age')                    #如果字典中存在該“鍵”則返回對應的“值”
39
>>> aDict.get('address', 'Not Exists.') #指定的“鍵”不存在時返回指定的默認值
'Not Exists.'
  • 使用字典對象的items()方法可以返回字典的鍵、值對。
  • 使用字典對象的keys()方法可以返回字典的鍵。
  • 使用字典對象的values()方法可以返回字典的值。

四、字典元素的添加、修改與刪除

1、添加

當以指定“鍵”爲下標爲字典元素賦值時,有兩種含義:
1)若該“鍵”存在,則表示修改該“鍵”對應的值;
2)若不存在,則表示添加一個新的“鍵:值”對,也就是添加一個新元素。

>>> aDict = {'age': 35, 'name': 'Dong', 'sex': 'male'}
>>> aDict['age'] = 39                  #修改元素值
>>> aDict
{'age': 39, 'name': 'Dong', 'sex': 'male'}
>>> aDict['address'] = 'SDIBT'         #添加新元素
>>> aDict
{'age': 39, 'address': 'SDIBT', 'name': 'Dong', 'sex': 'male'}

2.修改

使用字典對象的update()方法可以將另一個字典的“鍵:值”一次性全部添加到當前字典對象,如果兩個字典中存在相同的“鍵”,則以另一個字典中的“值”爲準對當前字典進行更新。

>>> aDict = {'age': 37, 'score': [98, 97], 'name': 'Dong', 'sex': 'male'}
>>> aDict.update({'a':97, 'age':39})  #修改’age’鍵的值,同時添加新元素’a’:97
>>> aDict
{'score': [98, 97], 'sex': 'male', 'a': 97, 'age': 39, 'name': 'Dong'}

3.刪除

  • 如果需要刪除字典中指定的元素,可以使用del命令
>>> del aDict['age']               #刪除字典元素
>>> aDict
{'score': [98, 97], 'sex': 'male', 'a': 97, 'name': 'Dong'}
  • 也可以使用字典對象的pop()和popitem()方法彈出並刪除指定的元素,例如:
>>> aDict = {'age': 37, 'score': [98, 97], 'name': 'Dong', 'sex': 'male'}
>>> aDict.popitem()                #彈出一個元素,對空字典會拋出異常
('age', 37)
>>> aDict.pop('sex')               #彈出指定鍵對應的元素
'male'
>>> aDict
{'score': [98, 97], 'name': 'Dong'}

五、字典應用舉例

首先生成包含1000個隨機字符的字符串,然後統計每個字符的出現次數。

import string
import random
x = string.ascii_letters + string.digits + string.punctuation    #字符、數字、標點
y = [random.choice(x) for i in range(1000)]
z = ''.join(y)
d = dict()                  #使用字典保存每個字符出現次數
for ch in z:
    d[ch] = d.get(ch, 0) + 1
for k,v in sorted(d.items()):
    print(k,':',v)

在這裏插入圖片描述


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章