Python中的字典

一、字典介紹

想一想:
如果有列表
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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容