python:字典(dictionary)
字典是可變列表型別,能夠儲存任意型別的物件,如字串列表元組等。
字典由鍵和值對應的鍵值對組成,字典也被稱作關聯陣列或雜湊表。
1. 字典的建立
1.變數名 = {}
2.變數名 = dict()
3.變數名 = {鍵:值,鍵:值…}
4.變數名 = dict( {鍵:值,鍵:值…} )
5.變數名 = dict(鍵 = 值,鍵 = 值…)
6.變數名 = dict( [ (鍵,值),(鍵,值),(鍵,值)… ] )
dict( [ [鍵,值],[鍵,值],[鍵,值]… ] )
dict( ( (鍵,值),(鍵,值),(鍵,值)… ) )
7.變數名 = dict( zip( ( 鍵,鍵,鍵…),(值,值,值…) ) )
2. 新增鍵值對
1. 直接新增
格式:字典名[‘鍵名’] = 值
dic = {'name':'張三','age':18}
dic['address']='北京'
print(dic)
# >>>{'name': '張三', 'age': 18, 'address': '北京'}
2. 利用setdefault()函式新增
格式:字典名.setdefault(‘鍵名’,‘值’)
dic = {'name':'張三','age':18} dic.setdefault('address','北京') print(dic) # >>>{'name': '張三', 'age': 18, 'address': '北京'}
3. update()
①:
功能:新增鍵值對
格式:字典名.update(鍵=值)
返回:None
②:
功能:新增鍵值對
格式:字典名.update( {鍵:值} )
返回:None
3. 刪除鍵值對
1. pop()
功能:刪除指定的鍵值對
格式:字典名.pop(‘鍵名’)
返回:刪除的鍵的值
dic = {'name':'張三','age':18}
a = dic.pop('name')
print(dic)
print(a)
# >>>{'age': 18}
# >>>張三
- 帶初始值的pop()
功能:刪除指定的鍵值對,如果該鍵值對不存在則返回預設值。
格式:字典名.pop(‘鍵名’,‘初始值’)
返回:如果鍵存在返回刪除的鍵的值,否則返回初始值 - popitem()
功能:隨機刪除一對鍵值對,一般刪除末尾的鍵值對。
格式:字典名.popitem()
返回:以元組的型別返回刪除的鍵值對
4. 檢視鍵在字典中是否存在
1. in函式
dic = {'name':'張三','age':18,'address':'北京','score':'99'}
a = "張三" in dic
print(a)
#>>>False
2. get()
功能:查詢鍵在字典中是否存在,如不在返回自定義值
格式:字典名.get(‘指定的鍵名’,自定義值)
返回:鍵存在返回對應的值,不存在返回自定義值
5. 字典改變鍵名
1. 推薦
在pop()函式執行的瞬間,鍵對應的值依舊存在未刪除,只需要鍵對應該值就可。不過改變之後的字典的位置和之前有不同。
dic = {'a':1,'b':2}
dic['c'] = dic.pop('a')
print(dic)
# >>>{'b': 2, 'c': 1}
2.
該方式和第一種幾乎沒有差別,缺點是更麻煩。
dic = {'a':1,'b':2}
dic.update({'c':dic.pop('a')})
print(dic)
#>>> {'b': 2, 'c': 1}
3.
dic = {'a':1,'b':2}
dic['c'] = dic['a']
del dic['a']
print(dic)
#>>> {'b': 2, 'c': 1}
這三種方式原理相同,推薦使用第一種方法。
6. 傳入序列作為字典的鍵名
fromkeys()函式:
功能:傳入序列作為字典的鍵名,並給這些鍵賦予同一個值。
格式:字典名 = dict.fromkeys(序列,值)
返回:建立好的字典
a = dict.fromkeys((1,2,3,4,5,6,7,8,9),11)
print(a)
# >>>{1: 11, 2: 11, 3: 11, 4: 11, 5: 11, 6: 11, 7: 11, 8: 11, 9: 11}