一、字典介紹
想一想:
如果有列表
nameList = ['xiaoZhang', 'xiaoWang', 'xiaoLi'];
- 需要對"xiaoWang"這個名字寫錯了,通過代碼修改:
nameList[1] = 'xiaoxiaoWang'- 如果列表的順序發(fā)生了變化,如下
nameList = ['xiaoWang', 'xiaoZhang', 'xiaoLi'];- 此時就需要修改下標(biāo),才能完成名字的修改
nameList[0] = 'xiaoxiaoWang'- 有沒有方法,既能存儲多個數(shù)據(jù),還能在訪問元素的很方便就能夠定位到需要的那個元素呢?
答:
字典
另一個場景:
- 學(xué)生信息列表,每個學(xué)生信息包括學(xué)號、姓名、年齡等,如何從中找到某個學(xué)生的信息?
studens = [[1001, "王寶強", 24], [1002, "馬蓉", 23], [1005, "宋喆",24], ...]- 循環(huán)遍歷? No!
- 生活中的字典
生活中的字典1.png
生活中的字典2.png
- 軟件開發(fā)中的字典
- 變量info為字典類型:
info = {'name':'班長', 'id':100, 'sex':'f', 'address':'地球亞洲中國北京'}- 說明:
- 字典和列表一樣,也能夠存儲多個數(shù)據(jù)
- 列表中找某個元素時,是根據(jù)下標(biāo)進行的
- 字典中找某個元素時,是根據(jù)'名字'(就是冒號:前面的那個值,例如上面代碼中的'name'、'id'、'sex')
- 字典的每個元素由2部分組成,鍵:值。例如 'name':'班長' ,'name'為鍵,'班長'為值
- 根據(jù)鍵訪問值
info = {'name':'班長', 'id':100, 'sex':'f', 'address':'地球亞洲中國北京'} print(info['name']) print(info['address'])
結(jié)果:
結(jié)果.png- 若訪問不存在的鍵,則會報錯:
info = {'name':'班長', 'id':100, 'sex':'f', 'address':'地球亞洲中國北京'} print(info['age'])結(jié)果.png
- 在我們不確定字典中是否存在某個鍵而又想獲取其值時,可以使用get方法,還可以設(shè)置默認值:
info = {'name':'班長', 'id':100, 'sex':'f', 'address':'地球亞洲中國北京'} age = info.get('age') age #'age'鍵不存在,所以age為None print(type(age)) age = info.get('age', 18) # 若info中不存在'age'這個鍵,就返回默認值18 print(age)結(jié)果.png
二、字典的常見操作1
- 修改元素
字典的每個元素中的數(shù)據(jù)是可以修改的,只要通過key找到,即可修改
- demo:
info = {'name':'班長', 'id':100, 'sex':'f', 'address':'地球亞洲中國北京'} print('修改之前的id為%d:'%info['id']) print('-'*20) newId = input('請輸入新的學(xué)號') info['id'] = int(newId) print('修改之后的id為%d:'%info['id'])
結(jié)果:
結(jié)果.png
- 添加元素
如果在使用 變量名['鍵'] = 數(shù)據(jù) 時,這個“鍵”在字典中,不存在,那么就會新增這個元素
- demo:
info = {'name':'班長','sex':'f', 'address':'地球亞洲中國北京'} # print('修改之前的id為%d:'%info['id']) //訪問不存在的鍵會報錯,前面已經(jīng)演示過了 print(info) print('-'*70) newId = input('請輸入新的學(xué)號:') info['id'] = int(newId) print('-'*20) print('添加之后的id為%d'%info['id']) print(info) print('-'*70)
結(jié)果:
結(jié)果.png
- 刪除元素
對字典進行刪除操作,有一下幾種:
- del
- clear()
- demo:del刪除指定的元素
info = {'name':'班長','sex':'f', 'address':'地球亞洲中國北京'} print(info) print('-'*70) del info['name'] print(info) print('-'*70)
結(jié)果:
結(jié)果.png
- demo:del刪除整個字典
info = {'name':'班長','sex':'f', 'address':'地球亞洲中國北京'} print(info) print('-'*70) del info print(info) print('-'*70)
結(jié)果:
結(jié)果.png
- demo:clear清空整個字典
info = {'name':'班長','sex':'f', 'address':'地球亞洲中國北京'} print(info) print('-'*70) info.clear() print(info) print('-'*70)
結(jié)果:
結(jié)果.png
三、字典的常見操作2
- len()
測量字典中,鍵值對的個數(shù)
- demo:
dict = {'name':'趙四','sex':'男'} print("字典的長度:",len(dict))
結(jié)果:
結(jié)果.png
- keys
返回一個包含字典所有KEY的列表
- demo:
dict = {'name':'趙四','sex':'男'} print("字典的所有KEY的列表:",dict.keys())
結(jié)果:
結(jié)果.png
- values
返回一個包含字典所有value的列表
- demo:
dict = {'name':'趙四','sex':'男'} print("字典的所有value的列表:",dict.values())
結(jié)果:
結(jié)果.png
- items
返回一個包含所有(鍵,值)元祖的列表
- demo:
dict = {'name':'趙四','sex':'男'} print("字典的所有(鍵,值)元祖的列表:",dict.items())
結(jié)果:
結(jié)果.png
- has_key(Python3中已經(jīng)刪除)
dict.has_key(key)如果key在字典中,返回True,否則返回False
- demo:
dict = {'name':'趙四','sex':'男'} print(dict.has_key('name'))
結(jié)果:
結(jié)果.png
四、字典的遍歷
- 遍歷
通過for ... in ...:的語法結(jié)構(gòu),我們可以遍歷字符串、列表、元組、字典等數(shù)據(jù)結(jié)構(gòu)。
注意python語法的縮進
- 遍歷字典的key(鍵)
- demo:
dict = {'name':'趙四','sex':'男','age':23} print(dict) print('-'*40) for key in dict.keys(): print(key)
結(jié)果:
結(jié)果.png
- 遍歷字典的value(值)
- demo:
dict = {'name':'趙四','sex':'男','age':23} print(dict) print('-'*40) for value in dict.values(): print(value)
結(jié)果:
結(jié)果.png
- 遍歷字典的項(元素)
- demo:
dict = {'name':'趙四','sex':'男','age':23} print(dict) print('-'*40) for item in dict.items(): print(item)
結(jié)果:
結(jié)果.png
- 遍歷字典的key-value(鍵值對)
- demo:
dict = {'name':'趙四','sex':'男','age':23} print(dict) print('-'*40) for key,value in dict.items(): print("key= %s,value= %s"%(key,value))
結(jié)果:
結(jié)果.png
- 想一想,如何實現(xiàn)帶下標(biāo)索引的遍歷
chars = ['a', 'b', 'c', 'd'] i = 0 for chr in chars: print("%d %s"%(i, chr)) i += 1
結(jié)果:
結(jié)果.png
- enumerate()
- demo:
chars = ['a', 'b', 'c', 'd'] for i, chr in enumerate(chars): print("%d %s"%(i, chr))
結(jié)果:
結(jié)果.png
五、公共方法
- 運算符
運算符.png
注意,in在對字典操作時,判斷的是字典的鍵
- python內(nèi)置函數(shù)
Python包含了以下內(nèi)置函數(shù)
函數(shù).png
- 注意:
cmp在比較字典數(shù)據(jù)時,先比較鍵,再比較值。
del有兩種用法,一種是del加空格,另一種是del()
- 多維列表/元祖訪問的示例
- deno:
tuple = [(2,3),(4,5)] print(tuple) print('-'*20) print(tuple[0]) print('-'*20) print(tuple[0][0])
結(jié)果:
結(jié)果.png























