05. 基本數據類型(dict)
內容:
1. 字典的簡單介紹
2. 字典增刪改查和其餘操做
3. 字典的嵌套
⼀. 字典的簡單介紹
字典(dict)是python中惟⼀的⼀個映射類型.他是以{ }括起來的鍵值對組成. 在dict中key是
惟⼀的. 在保存的時候, 根據key來計算出⼀個內存地址. 而後將key-value保存在這個地址中.
這種算法被稱爲hash算法, 因此, 切記, 在dict中存儲的key-value中的key'必須是可hash的,
若是你搞不懂什麼是可哈希, 暫時能夠這樣記, 能夠改變的都是不可哈希的,
那麼可哈希就意味着不可變. 這個是爲了能準確的計算內存地址⽽規定的.
已知的可哈希(不可變)的數據類型: int, str, tuple, bool
不可哈希(可變)的數據類型: list, dict, set
語法:
{key1: value1, key2: value2....}
注意: key必須是不可變(可哈希)的. value沒有要求.能夠保存任意類型的數據
# 合法
dic = {123: 456, True: 999, "id": 1, "name": 'sylar', "age": 18, "stu": ['帥
哥', '美⼥'], (1, 2, 3): '麻花藤'}
print(dic[123])
print(dic[True])
print(dic['id'])
print(dic['stu'])
print(dic[(1, 2, 3)])
# 不合法
# dic = {[1, 2, 3]: '周杰倫'} # list是可變的. 不能做爲key
# dic = {{1: 2}: "哈哈哈"} # dict是可變的. 不能做爲key
dic = {{1, 2, 3}: '呵呵呵'} # 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)
2. 刪除
ret = dic.pop("jay")
print(ret)
del dic["jay"]
print(dic)
# 隨機刪除.
ret = dic.popitem()
# 清空字典中的全部內容
dic.clear()
3. 修改
dic = {"id": 123, "name": 'sylar', "age": 18}
dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"}
dic.update(dic1) # 把dic1中的內容更新到dic中. 若是key重名. 則修改替換. 若是不存
在key, 則新增.
print(dic)
print(dic1)
4. 查詢
查詢⼀般⽤key來查找具體的數據.
print(dic['name'])
# print(dic['sylar']) # 報錯
print(dic.get("ok"))
print(dic.get("sylar")) # None
print(dic.get("sylar", "⽜B")) # ⽜B
5. 其餘相關操做
dic = {"id": 123, "name": 'sylar', "age": 18, "ok": "科⽐"}
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 = {
"name": "汪峯",
"age": 18,
"wife": {
"name": '章⼦怡',
"age": 28
},
"children": ['第⼀個⽑孩⼦', '第⼆個⽑孩⼦'],
"desc": '峯哥不會告我吧. 不要緊. 我想上頭條的'
}
print(dic1.get("wife").get("name"))
print(dic1.get("children"))
print(dic1.get("children")[1])
練習:
dic1 = {
'name':['alex',2,3,5],
'job':'teacher',
'oldboy':{'alex':['python1','python2',100]}
}
1,將name對應的列表追加⼀個元素’wusir’。
2,將name對應的列表中的alex⾸字⺟⼤寫。
3,oldboy對應的字典加⼀個鍵值對’⽼男孩’,’linux’。
4,將oldboy對應的字典中的alex對應的列表中的python2刪除python