python字典笔记
字典
字典? ?無序可變
與列表、元組不同,它們是存儲單個值,而字典存儲的key:value對,它存儲的數據總是成對的
key被稱為鍵,鍵不可重復且不可變(列表、集合、字典是可變的)
value被稱為值,值可以是任意類型的數據且可以重復
字典的創建
>>> dict1={}
>>> dict2=dict()
>>> contacts_dict={"小王":"13529395634","小李":"18656489656","小張":"15523632311","小朱":"13945667898"}
想知道字典里有多少數據,可用len()來獲取
>>> print(len(contacts_dict))
4
返回的是鍵值對的對數
想要知道一個key是否存在,使用in或not in成員操作符
>>> print('小王' in contacts_dict)
True
>>> print('15523632311' in contacts_dict)
False
Value值不可以是in來判斷
新增鍵值對和修改value
新增小麗的電話15123632776
>>> contacts_dict["小麗"]="15123632776"
如果又要添加另一個小王,電話為15936665645
>>> contacts_dict["小王"]="15936665645"
>>> print(contacts_dict)
{'小王': '15936665645', '小李': '18656489656', '小張': '15523632311', '小朱': '13945667898', '小麗': '15123632776'}
發現并沒有增加一個小王,而是之前小王的電話被修改了
因為字典的key值是不允許重復的
所以對于直接key值等于這種操作,如果key不存在,那么就會增加新的鍵值對,如果已存在,就直接修改value
訪問字典里的值
如果想要訪問字典里的值,就必須提供key,對于字典的任何操作都必須經過key值
比如想知道小李的電話號碼
print(contacts_dict["小李"])
18656489656
如果輸錯了,輸成了曉麗,就會報錯
>>> print(contacts_dict["曉麗"])
Traceback (most recent call last):
??File "<pyshell#13>", line 1, in <module>
????print(contacts_dict["曉麗"])
KeyError: '曉麗'
刪除字典里的鍵值對
想要刪除某值,就必須獲得該值的key
想要刪除小麗的電話
>>>?del contacts_dict["小麗"]
>>> print(contacts_dict)
{'小王': '15936665645', '小李': '18656489656', '小張': '15523632311', '小朱': '13945667898'}
還可以使用pop方法,有返回值
>>> contacts_dict.pop("小麗")
'15123632776'
>>> print(contacts_dict)
{'小王': '15936665645', '小李': '18656489656', '小張': '15523632311', '小朱': '13945667898'}
>>>
字典的嵌套
字典里面可以儲存字典
小宋有兩個號碼,一個手機號18956642553,一個座機號28796665
>>> contacts_dict["小宋"]={"手機":"18956642553","座機":"28796665"}
>>> print(contacts_dict)
{'小王': '15936665645', '小李': '18656489656', '小張': '15523632311', '小朱': '13945667898', '小宋': {'手機': '18956642553', '座機': '28796665'}}
現在想輸出小宋的座機號碼是多少
>>> print(contacts_dict["小宋"]["座機"])
28796665
字典的常用方法
Clear 刪除字典內的所有元素
>>> dic={"a":"python"}
>>> dic.clear()
>>> print(dic)
{}
重新賦空字典
>>> dic={"a":"python"}
>>> dic={}
>>> print(dic)
{}
>>> dic1={"a":"python"}
>>> print(id(dic1))
2234972420480
>>> dic1.clear()
>>> print(id(dic1))
2234972420480
Clear清空一個字典,該字典在內存中的地址并沒有變化
>>> dic1={"a":"python"}
>>> print(id(dic1))
2234972420672
>>> dic1={}
>>> print(id(dic1))
2234937787712
直接將空字典賦值,變量dic1重新指向了一個新字典,有了新地址,原來的字典被垃圾回收機制給回收了
所以clear是清空字典,而將空字典賦值給變量,并不是清空,只是修改了變量的引用而已
Fromkeys(序列(key),value(默認為none)) ?以指定的key值創建一個新字典
>>> score_dict=dict.fromkeys(["小李","小王"],100)
>>> print(score_dict)
{'小李': 100, '小王': 100}
錯誤示范1
>>> score_dict=dict.fromkeys(["小李","小王"],[100,80])
>>> print(score_dict)
{'小李': [100, 80], '小王': [100, 80]}
錯誤示范2
>>> score_dict=dict.fromkeys(["小李","小王"],100,80)
Traceback (most recent call last):
??File "<pyshell#44>", line 1, in <module>
????score_dict=dict.fromkeys(["小李","小王"],100,80)
TypeError: fromkeys expected at most 2 arguments, got 3
錯誤示范3
>>> score_dict=dict.fromkeys("小夏",100)
>>> print(score_dict)
{'小': 100, '夏': 100}
fromkeys方法接受兩個參數
第一個參數是序列,可以是列表,也可以是元組,方法將以這個序列里的元素做key,生成新的字典。
value由第二個參數來決定,我在代碼里傳入參數90,所有key所對應的value就都是90,如果不傳這個參數,默認value為None
get(key,default(默認為none))獲取key值對應的value,如果key值不存在則返回dafault值,默認為none
>>> contacts_dict.get("小霞","沒有這個key")
'沒有這個key'
>>> contacts_dict.get("小李","沒有這個key")
'18656489656'
items() 成對返回所有的key和value,通常用于遍歷
>>> for key,value in contacts_dict.items():
print(key,value)
小王 15936665645
小李 18656489656
小張 15523632311
小朱 13945667898
小宋 {'手機': '18956642553', '座機': '28796665'}
Keys() 返回字典里所有的key
>>> keys=contacts_dict.keys()
>>> for key in keys:
print(key)
小王
小李
小張
小朱
小宋
values() 返回字典里所有value
>>> values=contacts_dict.values()
>>> for value in values:
print(value)
15936665645
18656489656
15523632311
13945667898
{'手機': '18956642553', '座機': '28796665'}
Items ,keys,values三種方法返回的都是一個可迭代對象可以用for循環遍歷輸出
Setdefault(key,value) 向字典里添加新的元素,如果key值存在就不做任何操作,如不存在,就添加新的值,會返回key所對應的value值
>>> contacts_dict.setdefault("小王","15636455568")
'15936665645'
>>> print(contacts_dict)
{'小王': '15936665645', '小李': '18656489656', '小張': '15523632311', '小朱': '13945667898', '小宋': {'手機': '18956642553', '座機': '28796665'}}
>>> contacts_dict.setdefault("小霞","15636455568")
'15636455568'
>>> print(contacts_dict)
{'小王': '15936665645', '小李': '18656489656', '小張': '15523632311', '小朱': '13945667898', '小宋': {'手機': '18956642553', '座機': '28796665'}, '小霞': '15636455568'}
Update更新字典
字典1.Update(字典2),將字典2的內容更新到字典1當中
>>> dict1={1:"jerry",2:"tom"}
>>> dict2={2:"jack",3:"nancy"}
>>> dict1.update(dict2)
>>> print(dict1)
{1: 'jerry', 2: 'jack', 3: 'nancy'}
如果出現相同的key,則這個key的值取決于dict2的值
pop 刪除鍵值對
不論是使用del 還是使用pop方法刪除字典里的鍵值對,如果key不存在都會引發KeyError異常,pop與del的不同之處在于,pop會返回所刪除鍵值對的value
>>> del dict1[1]
>>> dict1.pop(2)
'jack'
>>> print(dict1)
{3: 'nancy'}
注意事項:
第一種,判斷key值是否存在
第二種用get(key)方法
因為true==1,flase==0,而字典里如果有key為1 或為0時,再使用bool值做key,值會被覆蓋,因為key值不能重復
總結
以上是生活随笔為你收集整理的python字典笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 完美主义与功利主义
- 下一篇: python中终结一个循环的保留字_【单