字典是什么?
內(nèi)置的數(shù)據(jù)結(jié)構(gòu)之一,與列表一樣,是可變序列

格式:“鍵:?值”,鍵值對。相當(dāng)于列表當(dāng)中的一個(gè)元素
以 鍵值對 的方式存儲(chǔ)數(shù)據(jù),列表:有序(第一個(gè)放進(jìn)去的元素在第一個(gè)位置上) vs 字典:無序

放入字典中的 鍵 ,必須是一個(gè)不可變序列
***不可變序列,就是str字符串等,目前學(xué)到2個(gè)可變序列就是:列表、字典。
哈希函數(shù)
往字典中 存儲(chǔ)數(shù)據(jù)時(shí),要經(jīng)過一個(gè)叫?哈希函數(shù)?的工序——要把?鍵?放入到?哈希函數(shù)?中 進(jìn)行一個(gè)計(jì)算(計(jì)算的是存儲(chǔ)位置)——所以要求 鍵 必須是不可變序列(str、int、bool......)。

hash函數(shù)計(jì)算出 鍵入內(nèi)容 所在位置
新建 字典——{}并賦值、dict(name=‘lax,age=21’)
直接用花括號(hào)時(shí),用 冒號(hào): 連接? ? or? ? 用dict()函數(shù)時(shí),用 等號(hào)= 賦值?
查找 字典 元素——對象.get()

最好用get(),直接用[]指定內(nèi)容,會(huì)對不存在的元素查找 報(bào)錯(cuò)
判斷key——print(?in/not in 對象) ;清空所有——對象.clear(),刪除——del 對象
新增、修改——用方括號(hào)指定對象并賦值

新增、修改——用方括號(hào)指定對象并賦值
獲取字典視圖(keys、values、鍵值對)的方法——對象.keys/values/items()并賦值給一個(gè)新對象
及 將獲取的視圖 轉(zhuǎn)換成列表print(list(新對象))

獲取的視圖 類型是字典_鍵/值/鍵值對
字典的遍歷

for in循環(huán)用來遍歷
字典的特點(diǎn)

key不可以重復(fù)(重復(fù) 就被后一個(gè)value覆蓋前一個(gè)value),value可以重復(fù)
key不可以重復(fù)(重復(fù) 就被后一個(gè)value覆蓋前一個(gè)value)

Mike重復(fù),所以23把2覆蓋了
字典會(huì)浪費(fèi)較大內(nèi)存

key之間的空位就是浪費(fèi)的空間,因?yàn)閗ey所在的位置是由 hash函數(shù) 指定的,難以避免會(huì)存在“空位”
字典生成式——for in+zip()的使用

用zip()
格式是:{item:price? ?for item,price in zip(items,prices)}

將item:price 換成 item.upper():price ——> 字符串的小寫變大寫