數據類型劃分:
可變數據類型:list、dict、set 不可哈希
不可變數據類型:tuple、bool、int、str 可哈希python
python內置了字典類型,使用鍵-值(key - value) 存儲,具備極快的查找速度;blog
key:必須是 不可變數據類型
value:任意數據類型字符串
dict 優勢:
二分查找效率快
存儲大量的關係型數據
特色:字典是無序的get
(A) dic1['key'] = value 沒有鍵值對,則添加;若是鍵,則值覆蓋。it
dic1 = {"name": "hkey", "age": 18, "sex": "male"} dic1["heigh"] = 185 dic1['name'] = 'jay' print(dic1) # 執行結果: # {'age': 18, 'sex': 'male', 'name': 'jay', 'heigh': 185}
(B) set_default() 有鍵值對,不作任何改變,沒有才添加。class
dic = {'name':'jay', 'age':18, 'sex': 'male'} dic.setdefault('age', 20) # 存在不修改,不報錯 dic.setdefault('heigh', 180) # 不存在修改。 print(dic) # 執行結果: # {'sex': 'male', 'heigh': 180, 'age': 18, 'name': 'jay'}
(A) pop(key, None) 刪除鍵值對,並返回值。若是字典中沒有刪除的key,則返回 None效率
dic = {'name':'jay', 'age':18, 'sex': 'male'} t1 = dic.pop('name') # 當 key 存在時,刪除字典中的key-value並返回value值給 t1 print(t1) print(dic) # 執行結果: # jay # {'sex': 'male', 'age': 18} dic = {'name':'jay', 'age':18, 'sex': 'male'} t1 = dic.pop('name1111', None) # 當 key 不存在時,則返回定義的第二個參數給 t1 print(t1) # 執行結果: # None
(B) popitem() 隨機刪除並返回刪除元組,元組裏面是刪除的鍵值對date
dic = {'name':'jay', 'age':18, 'sex': 'male'} t1 = dic.popitem() # 隨機刪除key-value 並做爲元組返回給 t1 print(t1, type(t1)) print(dic) # 執行結果: # ('name', 'jay') <class 'tuple'> # {'sex': 'male', 'age': 18}
(C) del 刪除鍵值對或者整個字典循環
dic = {'name':'jay', 'age':18, 'sex': 'male'} del dic['name'] # 刪除字典中的鍵值對 del dic # 直接刪除整個字典
(A) update 合併兩個字典遍歷
dic = {'name':'jay', 'age':18, 'sex': 'male'} dic2 = {'name1':'hkey', 'age1': 20} dic.update(dic2) # 將dic2做爲參數合併到dic中,dic變,dic2不變 print('dic:', dic) print('dic2:', dic2) # 執行結果: # dic: {'age': 18, 'name': 'jay', 'sex': 'male', 'name1': 'hkey', 'age1': 20} # dic2: {'age1': 20, 'name1': 'hkey'}
(A) dic.keys 字典key的組合,能夠當成list類型來處理
(B) dic.values 字典value的組合,能夠當成list類型來處理
(C) dic.items 字典(key, value)的組合,能夠當作元組來處理
dic = {'name':'jay', 'age':18, 'sex': 'male'} print(dic.keys()) print(dic.values()) print(dic.items()) # 執行結果: # dict_keys(['age', 'sex', 'name']) # dict_values([18, 'male', 'jay']) # dict_items([('age', 18), ('sex', 'male'), ('name', 'jay')]) keys()、values()、items() 通常用for來遍歷 for k in dic: # 循環 key 值 print(k) for v in dic.values(): # 循環 value 值 print(v) for k, v in dic.items(): # 循環key, value 值 print(k, v)
(D) dic.get() 存在則返回 value值,不存在就返回預設值
dic = {'name':'jay', 'age':18, 'sex': 'male'} print(dic.get('name')) print(dic.get('name111', None)) # 執行結果: # jay # None
練習題:
s1 = 'asdf123sdfer45sdf3'
統計 s1 出現數字的次數,連續的數字算一個數字;
s1 = 'asdf123sdfer45sdf3' for i in s1: # 循環整個 s1 字符串 if i.isalpha(): # 當單個字符串是字母的時候,就將字母替換成空格 s1 = s1.replace(i, ' ') li = s1.split() # 經過空格將字符串 s1 分隔成列表 print(len(li)) # 直接統計列表元素的個數 # 執行結果: # 3