python基礎【五、字典(dict)】

1.字典介紹

  • 每個字典元素都有鍵(key)和值(value)兩個屬性
  • key用於定義和標識字典元素,value是字典元素對應的值
  • value可以是任意值;字典、列表不能作爲字典的key
  • 字典是用鍵-值(key-value)存儲,具有極快的查找速度
  • 字典是無序的

list比較,dict有以下幾個特點:

  1. 查找和插入的速度極快,不會隨着key的增加而變慢
  2. 需要佔用大量的內存,內存浪費多

注意:字典的key必須是不可變對象

這是因爲dict根據key來計算value的存儲位置,如果每次計算相同的key得出的結果不同,那dict內部就完全混亂了,這個通過key計算位置的算法稱爲哈希算法(Hash)

要保證hash的正確性,作爲key的對象就不能變。在Python中,字符串、整數等都是不可變的,因此,可以放心地作爲key,而list是可變的,就不能作爲key

2.定義字典

  • 字典元素使用{}括起來
  • 鍵和值之間由冒號(:)分隔,元素間由逗號(,)分隔
d={'name':'小明','sex':'男','age':'18'}

定義一個空字典

d={}

3.獲取字典長度

d={'name':'小明','sex':'男','age':'18'}
v=len(d)
print(v)

運行結果

3

4.訪問字典元素

d={'name':'小明','sex':'男','age':'18'}
print(d['name'])
print(d['sex'])
print(d['age'])

運行結果

小明
男
18

5.添加字典元素

d={'name':'小明','sex':'男','age':'18'}
d['score']=80
print(d)

運行結果

{'name': '小明', 'sex': '男', 'age': '18', 'score': 80}

6.合併兩個字典

字典1.update(字典2)

d1={'name':'小明','sex':'男'}
d2={'age':'18','score':'80'}
d1.update(d2)  #將d2合併到d1中,合併時直接加到末尾
print(d1)

d1={'name':'小明','sex':'男'}
d2={'age':'18','score':'80'}
d2.update(d1)   #將d1合併到d2中,合併時直接加到末尾
print(d2)

運行結果

{'name': '小明', 'sex': '男', 'age': '18', 'score': '80'}
{'age': '18', 'score': '80', 'name': '小明', 'sex': '男'}

7.刪除字典元素

<1>字典.pop()

d={'name':'小明','sex':'男','age':'18'}
d.pop('sex')
print(d)

運行結果

{'name': '小明', 'age': '18'}

<2>del 字典[鍵]

d={'name':'小明','sex':'男','age':'18'}
del d['name']
print(d)

運行結果

{'sex': '男', 'age': '18'}

<3>隨機刪除

字典.popitem()

d={'name':'小明','sex':'男','age':'18'}
v=d.popitem()
print(d,v)

運行結果

{'name': '小明', 'sex': '男'} ('age', '18')

8.判斷某個元素是否存在在字典裏

<1>使用in關鍵字判斷字典中是否存在指定鍵的元素

鍵 in 字典

d={'name':'小明','sex':'男','age':'18'}
print('name' in d)
print('number' in d)

運行結果

True
False

<2>通過dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value

d={'name':'小明','sex':'男','age':'18'}
v=d.get('name')
print(v)
v=d.get('number')
print(v)
v=d.get('number',-1)
print(v)

運行結果

小明
None
-1

9.遍歷字典元素

for key in 字典.keys(): #遍歷字典的鍵
訪問 字典[key]
for value in 字典.values(): #遍歷字典的值
訪問 字典[value]

遍歷鍵

d={'name':'小明','sex':'男','age':'18'}
for key in d.keys():
    print(key)

運行結果

name
sex
age

遍歷值

for value in d.values():
    print(value)

運行結果

小明
男
18

遍歷鍵和值

for key in d.items():
    print(key)

for key in d.keys():
    print('鍵'+key+'的值:'+d[key])

運行結果

('name', '小明')
('sex', '男')
('age', '18')

鍵name的值:小明
鍵sex的值:男
鍵age的值:18

10.字典的嵌套

訪問嵌套字典

字典[鍵][鍵]

d={'name':{'first':'小明','last':'小李'},'age':'30'}
print(d['name']['first'])

運行結果

小明

11.根據序列,創建字典,並指定統一的值

dict.fromkeys(鍵,值)

v=dict.fromkeys(['123','666','good'],45)
print(v)
v=dict.fromkeys(['123','666','good'])
print(v)

運行結果

{'123': 45, '666': 45, 'good': 45}
{'123': None, '666': None, 'good': None}

12.設置值

字典.setdefault()

  • 已存在,不設置,獲取當前key對應的值
  • 不存在,設置,獲取當前key對應的值
d={'k1':123,'k2':'apple'}
v=d.setdefault('k1','v1')
print(d,v)
v=d.setdefault('k3',666)
print(d,v)

運行結果

{'k1': 123, 'k2': 'apple'} 123
{'k1': 123, 'k2': 'apple', 'k3': 666} 666

13.更新字典

字典.update()

d={'k1':123,'k2':'apple'}
d.update({'k1':1111,'k3':666})
print(d)

d={'k1':123,'k2':'apple'}
d.update(k1=111,k3=666)
print(d)

運行結果

{'k1': 1111, 'k2': 'apple', 'k3': 666}
{'k1': 111, 'k2': 'apple', 'k3': 666}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章