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