05 萬惡之源 基本資料型別 dict

2022-05-16 20:48:23 字數 3577 閱讀 6042

1.字典的簡單介紹

2.字典增刪改查和其他操作

3.字典的巢狀

一.字典的介紹

字典(dict)是python中唯一的乙個對映型別.他是以括起來的鍵值對組成.在dict中key是唯一的.在儲存的時候,根據key來計算出乙個記憶體的位址.然後將key-value儲存在這個位址中.這種演算法被稱為hash演算法,所以,切記,在dict中儲存的key-value中的key必須是hash的,如果你搞不懂什麼是可雜湊,暫時這樣記,可以改變的都是

已知的可雜湊(不可變)的資料型別:int(整數),str(字串),tuple(元祖),bool(布林值「true」「false」)

不可雜湊(可變)的資料型別:list(列表),dict(字典),set(集合)

語法:注意:key必須是不可變(可雜湊)的.value沒有要求.可以儲存任意資料型別

合法

dic =

print(dic[123])

print

(dic[true])

print(dic['id'

])print(dic['

stu'

])print(dic[(1, 2, 3)])

不合法dic = #

list是可變的. 不能作為key

dic = : "

哈哈哈"} #

dict是可變的. 不能作為key

dic = : '

呵呵呵'} #

set是可變的, 不能作為key

dict儲存的資料不是按照我們新增進去的順序儲存的.是按照hash(可雜湊)表的順序,而hash(可雜湊)表不是連續的,所以不能進行切片工作,它只能通過key來獲取dict中的資料

二. 字典的增刪改查和其他相關操作

1.增加

dic ={}

dic[

'name

'] = '

周潤發'

#如果dict中沒有出現這個key, 就會新增乙個key-value的組合進dict

dic['

age'] = 18

print

(dic)

#如果dict中沒有出現過這個key-value. 可以通過setdefault設定預設值

dic.setdefault('

李嘉誠') #

也可以往裡面設定值.

dic.setdefault("

李嘉誠", "

房地產") #

如果dict中已經存在了. 那麼setdefault將不會起作用

print(dic)

刪除

ret = dic.pop("

jay"

)print

(ret)

del dic["

jay"

]print

(dic)

#隨機刪除.

ret =dic.popitem()

#清空字典中的

修改

dic = 

dic1 =

dic.update(dic1)

#把dic1中的內容更新到dic中. 如果key重名. 則修改替換. 如果不存在key, 則新增.

print

(dic)

print(dic1)

查詢查詢一般用key來查詢具體的資料.

print(dic['

name'])

#print(dic['sylar']) # 報錯

print(dic.get("ok"

))print(dic.get("

sylar

")) #

none

print(dic.get("

sylar

", "

牛b")) #

牛b

5. 其他相關操作

dic = 

print(dic.keys()) #

dict_keys(['id', 'name', 'age', 'ok']) 不用管它是什麼.當成list來用就行

for key in

dic.keys():

print

(key)

print(dic.values()) #

dict_values([123, 'sylar', 18, '科比']) 一樣. 也當list來用

for value in

dic.values():

print

(value)

print(dic.items()) #

dict_items([('id', 123), ('name', 'sylar'), ('age', 18), ('ok', '科比')]) 這個東西也是list. 只不過list中裝的是tuple

for key, value in dic.items(): #

?? 這個是解構

print

(key, value)#解構

a, b = 1, 2

print

(a, b)

(c, d) = 3, 4

print

(c, d)

e, f = [1, 2, 3] #

解構的時候注意數量必須匹配

print(e, f)

三. 字典的巢狀

# 字典的巢狀

dic1 = ,

"children": ['第乙個毛孩子', '第二個毛孩子'],

"desc": '峰哥不會告我吧. 沒關係. 我想上頭條的'

}print(dic1.get("wife").get("name"))

print(dic1.get("children"))

print(dic1.get("children")[1])

練習:

dic1 =

}1,將name對應的列表追加乙個元素』wusir』。

2,將name對應的列表中的alex首字母大寫。

# dic1["name"][0]=dic1["name"][0].capitalize()

# print(dic1)

# dic1.get("name")[0]=dic1.get("name")[0].capitalize()

# print(dic1)

3,oldboy對應的字典加乙個鍵值對』老男孩』,』linux』。

# dic1["name"][0]=dic1["name"][0].capitalize()

# print(dic1)

# dic1.get("name")[0]=dic1.get("name")[0].capitalize()

# print(dic1)

4,將oldboy對應的字典中的alex對應的列表中的python2刪除。

# dic1["oldboy"]["alex"].remove("python2")

# print(dic1)

萬惡之源 再談編碼

1.is和 區別 id 內建函式 判斷兩邊的值 is 判斷記憶體位址 回顧編碼 1.ascii 英文,特殊字元,數字,8bit,1byte 2.gbk 中文 16bit,2byte.相容ascii 3.unicode 萬國碼,32bit 4byte.相容ascii 4.utf 8 長度可變的unic...

過早優化是萬惡之源

don t cut yourself code optimization as a double edged sword。中文翻譯 過早優化是萬惡之源。優化的好處多多,但是這並不意味著所有的 都需要進行優化,有時過度的優化反而適得其反 費時 費力 不討好。現代電腦科學的鼻祖 donald knuth...

萬惡之源 檔案操作

檔案操作 f open 檔名,mode 模式 encoding 編碼格式 模式 r,w,a,r w a rb,wb,ab,r b,w b,a b 1 開啟檔案,得到檔案控制代碼並賦值給乙個變數 f open a.txt r encoding utf 8 預設開啟模式就為r 2 通過控制代碼對檔案進行...