一. 字典的簡單介紹字典(dict)是python中唯一的一個映射類型.他是以{ }括起來的鍵值對組成. 在dict中key是 唯一的. 在保存的時候, 根據key來計算出一個記憶體地址. 然後將key-value保存在這個地址中. 這種演算法被稱為hash演算法,所以, 切記, 在dict中存儲的key ...
一. 字典的簡單介紹
字典(dict)是python中唯一的一個映射類型.他是以{ }括起來的鍵值對組成. 在dict中key是
唯一的. 在保存的時候, 根據key來計算出一個記憶體地址. 然後將key-value保存在這個地址中.
這種演算法被稱為hash演算法,所以, 切記, 在dict中存儲的key-value中的key'必須是可hash的,
如果你搞不懂什什麽是可哈希, 暫時可以這樣記, 可以改變的都是不可哈希的,
那麼可哈希就意味著不可變. 這個是為了了能準確的計算記憶體地址⽽而規定的.
已知的可哈希(不可變)的數據類型: int, str, tuple, bool
不可哈希(可變)的數據類型: list, dict, set
簡而言之: 字典 是用大括弧{} 括起來. 內部使用key:value的形式來保存數據,不是按照我們保存的順序保存的, 無序的
語法 :
{key1: value1, key2: value2....}
註意: key必須是不可變(可哈希)的. value沒有要求.可以保存任意類型的數據
1. dic = {123: 456, True: 999, "id": 1, "name": 'sylar', "age": 18, "stu": ['帥哥', '美女'], (1, 2, 3): '麻花藤'}
# 合法的 列印內容
print(dic[123]) ======> 456
print(dic[True]) ======> 999
print(dic['id']) ======> 1
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中的數據
3. 字典的常用方法
1. keys() 返回所有字典的key的集合(高仿列表)
2. values() 返回所有的value的集合
3. items() 返回鍵值對. 元組
二.字典的增刪改查和其他相關操作
1.增
dic = { }
dic = ['name'] = '周潤發' # 如果dict中沒有出現這個key, 就會新增一個key-value的組合進dict
dic['age'] = 18
print(dic) =====> {'name' : '周潤發' , 'age' : 18}
如果dict中沒有出現過這個key-value. 可以通過setdefault設置預設值
dic.setdefault('李嘉誠') # 也可以往里面設置值.
dic.setdefault("李嘉誠", "房地產") # 如果dict中已經存在了了. 那麼setdefault將不不會起作用
dic = {"及時雨":"宋江", "小李廣":"花榮", "黑旋風":"李逵", "易大師":"劍聖"}
dic["大寶劍"] = "蓋倫" # 新增
dic["及時雨"] = "天老爺" # 修改
print(dic["易大師是個腦殘"]) # 查詢, 如果key不存在,報錯
print(dic.get("易大師", "餘小C")) # 如果key不存在. 返回None
get() #可以通過key來獲取value的值. 那麼如果key不存在. 返回None. 可以給出一個預設值. 當key不存在的時候返回預設值
2.刪
dic = {123: 456, True: 999, "id": 1, "name": 'sylar', "age": 18, "stu": ['帥哥', '美女'], (1, 2, 3): '麻花藤'}
ret = dic.pop('name')
print(ret) =====> sylar
del dic['name']
print(dic) ===> {123: 456, True: 999, "id": 1, "age": 18, "stu": ['帥哥', '美女'], (1, 2, 3): '麻花藤'}
# del 刪除的時候不能得到反還值
# 隨機刪除.
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) =====> {"id": 123, "name": 'sylar', "age": 18, "id": 456, "name": "麻花藤", "ok": "wtf"}
print(dic1) =====> {"id": 456, "name": "麻花藤", "ok": "wtf"}
4.查詢
dic = {"id": 123, "name": 'sylar', "age": 18, "id": 456, "name": "麻花藤", "ok": "wtf"}
查詢一般用key來查找具體的數據
print(dic['name'])
# print(dic['sylar']) # 報錯
print(dic.get("ok"))
print(dic.get("sylar")) # None
print(dic.get("sylar", "牛B")) # 牛B
Python 字典(Dictionary) get() 函數返回指定鍵,如果鍵不在字典中返回預設值。
5.其他操作
dic = {"id": 123, "name": 'sylar', "age": 18, "ok": "科比"}
print(dic.keys()) # dict_keys(['id', 'name', 'age', 'ok']) 不用管它是什麼.當成list來用就行
# 返回所有字典的key的集合(高仿列表)
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) =====> a = 1 b = 2
a = (1, 2)