Python字典介紹

語言: CN / TW / HK

目前B站正在直播Mysql、Oracle實戰,詳情關注公眾號:IT邦德

微信二維碼                              微信公眾號

字典是“鍵值對”的無序可變序列,字典中的每個元素都是一個“鍵值對”,包含:“鍵物件”和“值物件”。

可以通過“鍵物件”實現快速獲取、刪除、更新對應的“值物件”。列表中我們通過“下標數字”找到對應的物件。

字典中通過“鍵物件”找到對應的“值物件”。“鍵”是任意的不可變資料,比如:整數、浮點數、字串、元組。

但是:列表、字典、集合這些可變物件,不能作為“鍵”,並且“鍵”不可重複。

“值”可以是任意的資料,並且可重複。

一個典型的字典的定義方式:a = {'name':'jeames','age':18,'job':'programmer'}

1 字典的建立

1.1 我們可以通過{}、dict()來建立字典物件

>>> a = {'name':'jeames','age':18,'job':'programmer'}
>>> b = dict(name='jeames',age=18,job='programmer')
>>> a = dict([("name","jeames"),("age",18)])
>>> c = {} #空的字典物件
>>> d = dict() #空的字典物件

1.2  通過 zip()建立字典物件

>>> k = ['name','age','job']
>>> v = ['jeames',18,'techer']
>>> d = dict(zip(k,v))
>>> d
{'name': 'jeames', 'age': 18, 'job': 'techer'}

1.3  通過 fromkeys 建立值為空的字典

>>> a = dict.fromkeys(['name','age','job'])
>>> a
{'name': None, 'age': None, 'job': None}

2 字典元素的訪問

為了測試各種訪問方法,我們這裡設定一個字典物件:a = {'name':'jeames','age':18,'job':'programmer'}

2.1 通過 [鍵] 獲得“值”

若鍵不存在,則丟擲異常

>>> a = {'name':'jeames','age':18,'job':'programmer'}
>>> a['name']
'jeames'
>>> a['age']
18
>>> a['sex']
Traceback (most recent call last):
File "<pyshell#374>", line 1, in <module>
a['sex']
KeyError: 'sex'

2.2. 通過 get()方法獲得“值”,推薦使用

優點是:指定鍵不存在,返回 None;也可以設定指定鍵不存在時預設返回的物件,推薦使用 get()獲取“值物件”。

>>> a.get('name')
'gaoqi'
>>> a.get('sex')
>>> a.get('sex','一個男人')
'一個男人'

2.3 列出所有的鍵值對

>>> a.items()
dict_items([('name', 'gaoqi'), ('age', 18), ('job', 'programmer')])

2.4  列出所有的鍵,列出所有的值

>>> a.keys()
dict_keys(['name', 'age', 'job'])
>>> a.values()
dict_values(['jeames', 18, 'programmer'])

3 字典元素新增\刪除

給字典新增“鍵值對”。如果“鍵”已經存在,則覆蓋舊的鍵值對;如果“鍵”不存在,則新增“鍵值對”

>>>a = {'name':'jeames','age':18,'job':'programmer'}
>>> a['address']='合肥'
>>> a['age']=16
>>> a
{'name': 'gaoqi', 'age': 16, 'job': 'programmer', 'address': '合肥'}

字典中元素的刪除,可以使用 del()方法;

或者 clear()刪除所有鍵值對;pop()刪除指定鍵值對,並返回對應的“值物件”;

>>> a = {'name':'jeames','age':18,'job':'programmer'}
>>> del(a['name'])
>>> a
{'age': 18, 'job': 'programmer'}
>>> b = a.pop('age')
>>> b
18

QQ:2243967774,更多資料請關注公眾號:IT 邦德,專注於資料庫及程式開發,掃描加微信

​​​​​​​