Python字典的用法詳解(附範例)

不言
發布: 2018-10-09 15:55:00
轉載
3103 人瀏覽過

這篇文章帶給大家的內容是關於Python字典的用法詳解(附範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

字典的表現為:{key:value},鍵和值之間以冒號分隔,每個鍵值對兒之間用逗號分隔,例如{'name':'超人','age':500},要注意key的類型必須是不可變的類型,python對key進行雜湊函數運算,根據計算結果決定value的儲存位址,所以字典是無序儲存的。字典的增刪改查如下:

可以透過直接賦值的方式對字典進行修改,當指定的鍵不存在時則會在末尾增加一對兒鍵值

dic = {'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}
dic['age'] = 20
dic['lover'] = '小昭'
print(dic)
输出:
{'name': '刘先生', 'age': 20, 'job': '工程师', 'marr': '已婚', 'lover': '小昭'}
登入後複製

也可以使用setdefaultv(key,value)方法來增加鍵值對兒
如果key存在則不錯任何改動,如果key不存在,則會在末尾添加新的鍵值,並且如果不給定value的話默認為None
一句話概括就是“有就不管他,沒有就增加”,這在循環中可以利用這一點

dic = {'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}
dic.setdefault('name','超人')
dic.setdefault('lover','小姐姐')
print(dic)
输出:
{'name': '刘先生', 'age': '39', 'job': '工程师', 'marr': '已婚', 'lover': '小姐姐'}
登入後複製

刪: pop() clear del

pop 刪除指定的key對應的value,並且傳回刪除的value,如果key不存在則會報錯。

dic = {'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}
res = dic.pop('name')
print(dic,'返回值:',res)
输出:
{'age': '39', 'job': '工程师', 'marr': '已婚'} 返回值: 刘先生
登入後複製

在使用pop()時也可以增加一個參數來指定回傳值,如果給定的key不存在則會傳回給定的回傳值。這種方式非常好用,可以防止key不存在時報錯,如果存在則刪除,不存在則傳回指定的字串。

dic = {'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}
res = dic.pop('小三儿','查无此人')
print('返回值:',res)
输出:
返回值: 查无此人
登入後複製

clear 用來清空字典。

dic = {'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}
dic.clear()
print(dic)
输出:
{}
登入後複製

del 用來刪除指定的鍵值,如果只給字典名字時則會刪除整個字典物件

dic = {'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}
del dic['name']
#del dic
print(dic)
输出:
{'age': '39', 'job': '工程师', 'marr': '已婚'}
登入後複製

改變: 見「增”

查:

可以直接指定鍵來存取字典,有則傳回對應的值,沒有則報錯:

dic = {'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}
a = dic['name']
print(a)
输出:
刘先生
登入後複製

可以透過字典的三個方法keys(),values(),items()分別查詢所有的鍵、值、鍵值對兒。

dic = {'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}
a = dic.keys()
b = dic.values()
c = dic.items()
print('keys():',a)
print('values():',b)
print('items():',c)
输出:
keys(): dict_keys(['name', 'age', 'job', 'marr'])
values(): dict_values(['刘先生', '39', '工程师', '已婚'])
items(): dict_items([('name', '刘先生'), ('age', '39'), ('job', '工程师'), ('marr', '已婚')])
登入後複製

也可以用for迴圈遍歷這三個方法來分別得到鍵值。

dic = {'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}
for k in dic.keys():
    print(k)
输出:
name
age
job
marr
登入後複製
dic = {'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}
for v in dic.values():
    print(v)
输出:
刘先生
39
工程师
已婚
登入後複製
dic = {'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}
for k,v in dic.items():
    print(k,v)
输出:
name 刘先生
age 39
job 工程师
marr 已婚
登入後複製

字典的其他方法

#len(dict)
計算字典元素個數。
str(dict)
把字典專戶為字串,如:

dic = {'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}
a = str(dic)
import re
res = re.search(r'name',a)
print(res)
输出:
<_sre.SRE_Match object; span=(2, 6), match=&#39;name&#39;>

因为把dic转化为字符串并赋值给a,所以可以对a进行正则匹配
而如果直接对dic进行正则匹配则报错,因为dic不是字符串类型。
登入後複製

copy()
傳回一個字典的淺複製

dict.fromkeys(seq,'value')
#以序列seq中的元素作為字典的鍵,value為初始值創建字典,如果不給參數value的話則每個鍵對應的值為Non,注意:這是一個“類別方法”,所以使用時前面要加dict.

seq = ['a',1,'b']
a = dict.fromkeys(seq,'value')
print(a)
输出:
{'a': 'value', 1: 'value', 'b': 'value'}
登入後複製

get(key, default=None)
#傳回指定鍵的值,如果鍵不存在則傳回default值。

popitem()
刪除並傳回字典的一個鍵值對,如果字典為空則會報錯。

dic = {'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}
res1 = dic.popitem()
res2 = dic.popitem()
res3 = dic.popitem()
print(res1,res2,res3,dic)
输出:
('marr', '已婚') ('job', '工程师') ('age', '39') {'name': '刘先生'}
登入後複製

update([other])
用鍵值對兒更新字典,如果鍵已經存在則會取代對應的值,參數為另外一個字典或可迭代的鍵值對兒,例如:

dic = {'name':'刘先生','age':'39','job':'工程师','marr':'已婚'}
it = ((i,i**2) for i in range(1,4))
dic.update(it)
print(dic)
输出:
{'name': '刘先生', 'age': '39', 'job': '工程师', 'marr': '已婚', 1: 1, 2: 4, 3: 9}
也可以用下面的方式指定键对应的值,比如
dic.update(name = '李小姐',age = 22)
登入後複製

以上是Python字典的用法詳解(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!