[ python ] 字典的使用

數據類型劃分:
    可變數據類型:list、dict、set    不可哈希
    不可變數據類型:tuple、bool、int、str    可哈希python

 

字典

python內置了字典類型,使用鍵-值(key - value) 存儲,具備極快的查找速度;blog

key:必須是 不可變數據類型
value:任意數據類型字符串

dict 優勢:
    二分查找效率快
    存儲大量的關係型數據
    特色:字典是無序的get

 

dict的增刪改查

 

1. 增長

 (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'}

 

2. 刪除

(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 # 直接刪除整個字典

 

 3. 修改

(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'}

 

4. 查詢

(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
相關文章
相關標籤/搜索