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])
(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
(dic)
#如果dict中沒有出現過這個key-value. 可以通過setdefault設定預設值
dic.setdefault('
李嘉誠') #
也可以往裡面設定值.
dic.setdefault("
李嘉誠", "
房地產") #
如果dict中已經存在了. 那麼setdefault將不會起作用
print(dic)
刪除
ret = dic.pop("jay"
(ret)
del dic["
jay"
(dic)
#隨機刪除.
ret =dic.popitem()
#清空字典中的
修改
dic =dic1 =
dic.update(dic1)
#把dic1中的內容更新到dic中. 如果key重名. 則修改替換. 如果不存在key, 則新增.
(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():
(key)
print(dic.values()) #
dict_values([123, 'sylar', 18, '科比']) 一樣. 也當list來用
for value in
dic.values():
(value)
print(dic.items()) #
dict_items([('id', 123), ('name', 'sylar'), ('age', 18), ('ok', '科比')]) 這個東西也是list. 只不過list中裝的是tuple
for key, value in dic.items(): #
?? 這個是解構
(key, value)#解構
a, b = 1, 2
(a, b)
(c, d) = 3, 4
(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 通過控制代碼對檔案進行...