5.Python初窺門徑(字典)

Python字典學習

1.字典初識

​ 1.字典的簡單介紹
​ 字典(dict),是python中惟一的映射類型.他是以{ }括起來的鍵值對組成.在dict中key是惟一的.在保存的時候,根據key來計算出一個內存地址.而後將key-value保存在這個地址中.這種算法被稱爲hash算法, 因此, 切記, 在dict中存儲的key-value中的key'必須是可hash的,若是你搞不懂什麼是可哈希.
​ 已知的可哈希(不可變)的數據類型: int, str, tuple, boolpython

​ 2.語法 : {key1: value1, key2: value2....}git

​ 3.注意 : key必須是不可變(可哈希)的. value沒有要求,能夠保存任意類型的數據,字典保存的數據時是無序的,所以不能用索引查找,只能用key來獲取字典中的數據.算法

# key合理狀況
dic = {123:456,True:False,"武當":"太極", "少林":'羅漢',"峨眉":"師太","丐幫":['祥龍','伏虎'], (1,2,3):"大挪移"}
print(dic[123]) # 456
print(dic[True]) # False
print(dic['武當']) # 太極
print(dic[(1,2,3)]) # 大挪移
print(dic["丐幫"]) # ["祥龍","伏虎"]
---------------------------------
# key不合理狀況
dic = {[1,2,3]:456} # 列表是可變的,不能做key
dic = {{1:2}:"哈哈哈"} # 字典是可變的,不能做key
dic = {{1,2,3}:'呵呵呵'} # 集合是可變的,不能做key

2.字典增刪改查和其餘操做

​ 1.字典增長學習

dic = {}
dic["name"] = '張三丰' # 若是dict中沒有出現這個key, 就會新增一個key-value的組合增長到dict中
dic["age"] = 101
print(dic) # {'name':'張三丰','age':101}
---------------------------------
# 若是dict中沒有出現過這個key-value.能夠經過setdefault設置默認值
dic.setdefault('張三丰') # 也能夠往裏面設置值
dic.setdefault("張三丰","太極") # 若是dict中已經存在了,那麼setdefault將不會起做用
print(dic)

​ 2.字典刪除code

# pop刪除 # 會有返回值
ret = dic.pop("jay")
print(ret)
---------------------------------
# del刪除
del dic["jay"]
print(dic)
---------------------------------
# 隨機刪除.
ret = dic.popitem()
---------------------------------
# 清空字典中的全部內容
dic.clear()

​ 3.字典修改索引

dic = {"武當":"太極","少林":"羅漢"}
dic1 = {"峨眉":"師太","少林":"伏虎"}
dic.update(dic1) # 把dic1中的內容更新到dic中,若是key重名則修改替換,若是不存在key則新增.
print(dic) # {"武當":"太極","少林":"伏虎","峨眉":"師太"}
print(dic1) # {"峨眉":"師太","少林":"伏虎"}

​ 4.字典查詢內存

​ 通常用key來查找具體的數據get

# 經過key值查詢
dic = {"武當":"太極","少林":"伏虎","峨眉":"師太"}
print(dic['武當']) # 太極
# print(dic['太極']) # 報錯
---------------------------------
# 用git + key方法查找
print(dic.get("ok")) # None
print(dic.get("武當")) # 太極
print(dic.get("華山", "不存在")) # 不存在

​ 5.字典其餘相關操做hash

dic = {123:456,True:False,"武當":"太極", "少林":'羅漢',"峨眉":"師太","丐幫":['祥龍','伏虎'],(1,2,3):"大挪移"}
---------------------------------
# 取key
print(dic.keys()) # dict_keys([123, True, '武當', '少林', '峨眉', '丐幫', (1, 2, 3)]) 不用管它是什麼當成list來看就行,不能夠直接用迭代方式可直接用.
---------------------------------
# 取values
print(dic.values()) # dict_values([456, False, '太極', '羅漢', '師太', ['祥龍', '伏虎'], '大挪移']) 一樣,也當list來看,不能夠直接用迭代方式可直接用.
---------------------------------
# 同時取key和values
print(dic.items()) # dict_items([(123, 456), (True, False), ('武當', '太極'), ('少林', '羅漢'), ('峨眉', '師太'), ('丐幫', ['祥龍', '伏虎']), ((1, 2, 3), '大挪移')]) 這個也是list,只不過list中裝的是tuple,不能夠直接用迭代方式可直接用.
---------------------------------
# 解構
a,b = 1,2
print(a,b) # 1 2
(c,d) = 3,4
print(c,d) # 3 4
e,f = [1,2,3] # 解構的時候注意數量必須匹配不然報錯
print(e,f)# 報錯

3.字典嵌套

​ 一層一層看靈活運用便可,融會貫通.it

# 字典的嵌套
dic = {123:456,True:False,"武林":{"武當":"太極","少林":"羅漢"},"少林":"羅漢","峨眉":"師太","丐幫":['祥龍','伏虎'],(1,2,3):"大挪移"}
print(dic.get("武林").get("武當")) # 太極
print(dic.get("丐幫")) # ['祥龍','伏虎']
print(dic.get("丐幫")[1]) # 伏虎

4.字典總結

  • dict無序的,dict可變的,key不可改變而且惟一,value任意
  • dict能夠進行增,刪,改,查等操做
  • 存儲大量數據,比列表存儲量更大
  • 查找值得時候更加方便,快速
  • 可以將數據進行並聯
  • 字典比較消耗內存
相關文章
相關標籤/搜索