python中字典(dict)的用法
阿新 • • 發佈:2021-01-11
系列文章目錄
前言
Python中字典(dict)的用法。提示:以下是本篇文章正文內容,下面案例可供參考
一、字典(dict)的介紹
Python的字典資料型別是基於hash雜湊演算法實現的,採用鍵值對(key:value)的形式,根據key的值計算value的地址,具有非常快的查取和插入速度。它是一種可變物件,所以支援修改、插入、刪除等操作。
二、字典(dict)的建立
建立字典:
{}
{key1:value1, key2: value2}
dic = {} # 建立空字典
print(dic) # {}
print(type (dic)) # <class 'dict'>
information_Tom = {'address': 'london', 'age': 18, 'hobbit': ['play game', 'badminton']}
print(type(information_Tom)) # <class 'dict'>'
#注意: 字典中的value為任意型別,key只能是不可變資料型別
information_Tom = {'address': 'london', 'address': 'beijing'}
print(information_Tom) # {'address' : 'beijing'} 如果重複出現key值,將會覆蓋前者,保留後者
dic1 = dict() # 建立一個空字典
print(dic1) # {}
dic2 = dict(name='Tom', age=18) # 利用 dict(**kwargs)建立字典
print(dic2) # {'name': 'Tom', 'age': 18}
dic3 = dict([('name', 'Tom'), ('age', 18)]) # 利用dict(mapping)建立字典
print(dic3) # {'name': 'Tom', 'age': 18}
拓展:
map(func,*iterable):
zip(iter1[,iter2[…]]):
將iter1 iter2 中對應的元素打包成一個個元組,然後返回由這些元組組成的列表。
li = list('1234') # 將li中每個元素轉為int型別
print(list(map(int, li))) # [1, 2, 3, 4] 將li中每個元素傳到int中,再返回
li_k = ['name', 'age'] # 目標:將li_k與li_v元素一一對應起來
li_v = ['Tom', 18]
print(dict(list(zip(li_k, li_v)))) # {'name': 'Tom', 'age': 18}一一對應,多餘元素不顯示
三、訪問字典(dict)
字典是集合型別,不是序列型別,因此沒有譜索引下標的概念,更沒有切片的說法。但是,與list類似,字典採用把相對應的鍵放入方括號內獲取對應值的方式取值。
dic1 = {'name': 'Tom', 'age':18}
# print(dic1[0]) # 報錯,dict是集合型別,沒有下標說法
print(dic1['name']) # Tom 注意:當key值不存在時,會報錯
四、字典(dict)的增加與修改
增加就是往字典插入新的鍵值對。
dic1 = {'name': 'Tom', 'age':18}
dic1['address'] = 'london' # 增加
print(dic1) # {'name': 'Tom', 'age': 18, 'address': 'london'}
修改就是給原有的鍵賦予新的值。由於一個key只能對相應一個值,所以,多次對一個key賦值,後面的值會把前面的覆蓋掉。
dic1 = {'name': 'Tom', 'age':18}
dic1['age'] = 20 # 將原有的age=18 重新賦值為20
print(dic1) # {'name': 'Tom', 'age': 20}
五、字典(dict)一系列刪除
刪除字典元素:del dic[exit_key] / dic.pop(exit_key)
刪除整合字典:del dic
清空整個字典:dic.clear()
dic1 = {'name': 'Tom', 'age': 18}
del dic1['name']
print(dic1) # {'age': 18}
dic1 = {'name': 'Tom', 'age': 18}
dic1.pop('age')
print(dic1) # {'name': 'Tom'}
dic1 = {'name': 'Tom', 'age': 18}
del dic1
print(dic1) # 已經刪除,NameError: name 'dic1' is not defined
print(dic1.clear()) # None
六、字典(dict)的常見操作
d.get(k[,d])–>返回指定鍵的值,如果值不存在字典中,則返回default值
dic1 = {'name': 'Tom', 'age': 18}
print(dic1.get('age')) # 18
print(dic1.get('address')) # None 如果用[],則會報錯,使用get()返回none
d.items()–>以列表返回可遍歷的(鍵,值)元組對
dic1 = {'name': 'Tom', 'age': 18}
for key, value in dic1.items():
print(key, value) # name Tom age 18
d.keys()–>以列表返回字典所有的鍵
dic1 = {'name': 'Tom', 'age': 18}
print(dic1.keys()) # dict_keys(['name', 'age'])
d.values–>以列表返回字典所有的值
dic1 = {'name': 'Tom', 'age': 18}
print(dic1.values()) # dict_values(['Tom', 18])
七、字典(dict)大作業
作業1
li1 = [‘name’, ‘author’, ‘introduce’]
li2 = [‘NORWEGIAN WOOD’, ‘Hatuki Murakami’, ‘babababab…’]
將li1與li2以鍵值對的形式呈現
li1 = ['name', 'author', 'introduce']
li2 = ['NORWEGIAN WOOD', 'Hatuki Murakami', 'babababab....']
print(dict(list(zip(li1, li2)))) # {'name': 'NORWEGIAN WOOD', 'author': 'Hatuki Murakami', 'introduce': 'babababab....'}
def f_map(key, value):
return (key, value)
print(dict(map(f_map, li1, li2))) # {'name': 'NORWEGIAN WOOD', 'author': 'Hatuki Murakami', 'introduce': 'babababab....'}
作業2
Amy_information = {'name': 'amy', 'addr': 'hunan', 'weight': 90}
print(Amy_information.keys()) # dict_keys(['name', 'addr', 'weight'])
print(Amy_information.values()) # dict_values(['amy', 'hunan', 90])