日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

python字典笔记

發(fā)布時(shí)間:2023/12/20 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python字典笔记 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

字典

字典? ?無序可變

與列表、元組不同,它們是存儲(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):

  • 直接用dict[key]取值有風(fēng)險(xiǎn),如果key'值不存在則會(huì)報(bào)異常,為避免這種異常,通常有兩種方法
  • 第一種,判斷key值是否存在

    第二種用get(key)方法

  • 不要用布爾類型做key
  • 因?yàn)閠rue==1,flase==0,而字典里如果有key為1 或?yàn)?時(shí),再使用bool值做key,值會(huì)被覆蓋,因?yàn)閗ey值不能重復(fù)

    總結(jié)

    以上是生活随笔為你收集整理的python字典笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。