<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python 基礎(chǔ)第七講:怎么理解字典呢?

          共 9032字,需瀏覽 19分鐘

           ·

          2021-04-01 00:07

          4.5.1 什么是字典

          字典是另外一個(gè)可變的數(shù)據(jù)結(jié)構(gòu),且可存儲(chǔ)任意類(lèi)型對(duì)象,比如字符串、數(shù)字、列表等。字典是由關(guān)鍵字和值兩部分組成,也就是 key 和 value,中間用冒號(hào)分隔。這種結(jié)構(gòu)類(lèi)似于新華字典,字典中每一個(gè)字都有一個(gè)對(duì)應(yīng)的解釋?zhuān)唧w語(yǔ)法如下:

          語(yǔ)法:

          字典名 = { 關(guān)鍵字1:值,關(guān)鍵字2:值,關(guān)鍵字3:值}

          每個(gè)鍵與值用冒號(hào)隔開(kāi)(:),每對(duì)用逗號(hào)分割,整體放在花括號(hào)中({})。

          鍵必須獨(dú)一無(wú)二,但值則不必??梢杂腥我舛鄠€(gè)鍵值對(duì)

          值可以取任何數(shù)據(jù)類(lèi)型,但鍵必須是不可變的,如字符串,數(shù)或元組。

          例子:

          #構(gòu)建一個(gè)字典,記錄各宮嬪妃的年薪銀子

          name_dictionary = {'魏瓔珞':300,'皇后':1000,'皇貴妃':800,'貴妃':600,'':200}

          print(name_dictionary)

          print('字典的數(shù)據(jù)類(lèi)型表示是:',type(name_dictionary))

           

          {'魏瓔珞': 300, '皇后': 1000, '皇貴妃': 800, '貴妃': 600, '': 200}

          字典的數(shù)據(jù)類(lèi)型表示是: <class 'dict'>

          4.5.2 字典特性

          字典值可以沒(méi)有限制地取任何python對(duì)象,既可以是標(biāo)準(zhǔn)的對(duì)象,也可以是用戶(hù)定義的,但鍵不行。兩個(gè)重要的點(diǎn)需要記?。?/span>

          1.不允許同一個(gè)鍵出現(xiàn)兩次:創(chuàng)建時(shí)如果同一個(gè)鍵被賦值兩次,后一個(gè)值會(huì)被記住。

          例子

          # 定義兩個(gè)同樣的關(guān)鍵字Namedict = {'Name': 'Python', 'Age': 7, 'Name': 'Java'}print("dict['Name']: ", dict['Name'])

           

          dict['Name']:  ManniJava

           

          2. 鍵必須不可變:所以可以用數(shù),字符串或元組充當(dāng),所以用列表就不行

          例子

          # 關(guān)鍵字Name為列表dict = {['Name']:'Python', 'Age': 7};print ("dict['Name']: ", dict['Name'])

           

          File "/Users/yoni.ma/PycharmProjects/seven_days_python/Forth_day_strcure/dict_p.py", line 22, in <module>

          dict['Name']:  Java

              dict = {['Name']:'Python', 'Age': 7};

          TypeError: unhashable type: 'list'

          4.5.3 字典的基本操作

          字典在python中的類(lèi)型表示是  <class 'dict'>。當(dāng)查看到變量的類(lèi)型是dict,則可以對(duì)其進(jìn)行字典的操作。常見(jiàn)的字典操作是訪(fǎng)問(wèn)字典、遍歷字典等。這些操作在實(shí)際項(xiàng)目中經(jīng)常被使用到,比如excel文件讀入內(nèi)存以后,按照字典的方法存放。然后對(duì)其增加或刪除值。

          1.訪(fǎng)問(wèn)字典

          訪(fǎng)問(wèn)字典也就是獲取關(guān)鍵字對(duì)應(yīng)的值,方法是指定字典名和放在方括號(hào)內(nèi)的關(guān)鍵字,具體如下。獲取后的值可以賦值給變量。

          語(yǔ)法:

          變量名 = 字典名[關(guān)鍵字]

          例子

          # 訪(fǎng)問(wèn)字典

          weiyingluo = name_dictionary['魏瓔珞']

          print(f'魏瓔珞的年薪是:{weiyingluo}')

           

          魏瓔珞的年薪是:300

           

          2.添加鍵值對(duì)

          字典是一種可變的數(shù)據(jù)結(jié)構(gòu),可以隨時(shí)添加或者刪除其中的鍵值對(duì)。其中添加鍵值的方法是,指定字典名、用方括號(hào)括起的鍵和相關(guān)的值,具體如下。

          語(yǔ)法:

          字典名[關(guān)鍵字名] =

          例子

          # 增加貴人和常在的年薪銀子

          print(f'原來(lái)的后宮年薪字典是:{name_dictionary}')

          name_dictionary['貴人'] = 100

          name_dictionary['常在'] = 50

          print(F'增加鍵值后的后宮年薪字典變成:{name_dictionary}')

           

          原來(lái)的后宮年薪字典是:{'魏瓔珞': 300, '皇后': 1000, '皇貴妃': 800, '貴妃': 600, '': 200}

          增加鍵值后的后宮年薪字典變成:{'魏瓔珞': 300, '皇后': 1000, '皇貴妃': 800, '貴妃': 600, '': 200, '貴人': 100, '常在': 50}

           

          3.修改鍵值對(duì)

          如果字典中的值不是我們想要的,可以通過(guò)修改的方法達(dá)到。以此指定字典名、用方括號(hào)括起的鍵以及與該鍵相對(duì)應(yīng)的新值。

          語(yǔ)法:

          字典名[關(guān)鍵字名] = 新的值

          例子

          # 修改字典的值,比如修改常在的年薪為70

          print('常在原來(lái)的年薪是{} '.format(name_dictionary['常在']))

          name_dictionary['常在']= 70

          change_changzai = name_dictionary['常在']

          print(f'常在修改后的年薪是{change_changzai} ')

           

          常在原來(lái)的年薪是50

          常在修改后的年薪是70

           

          4刪除鍵值對(duì)

          如果字典中的鍵值對(duì)不再需要,我們可以徹底刪除。Python使用的是del語(yǔ)句,必須要指定要?jiǎng)h除的字典名和關(guān)鍵字。注意是永久刪除

          語(yǔ)法:

          del 字典名[關(guān)鍵字]

          例子

          #刪除字典中的鍵值對(duì),比如刪除常在

          del name_dictionary['常在']

          print(f'刪除常在后的后宮嬪妃年薪字典變成:{name_dictionary}')

           

          刪除常在后的后宮嬪妃年薪字典變成:{'魏瓔珞': 300, '皇后': 1000, '皇貴妃': 800, '貴妃': 600, '': 200, '貴人': 100}

           

          如果我們還需要用到被刪除的鍵值對(duì),則我們使用pop(‘鍵的名字’)方法。該方法是刪除字典給定鍵所對(duì)應(yīng)的值,并且返回該值。

          print('原來(lái)的字典是:', name_dictionary)# 使用pop方法刪除魏瓔珞name_pop = name_dictionary.pop('魏瓔珞')# 使用刪除后的值print('魏瓔珞的年薪是:',name_pop)print('使用pop方法刪除后的字典是:',name_dictionary)

           

          原來(lái)的字典是: {'魏瓔珞': 300, '皇后': 1000, '皇貴妃': 800, '貴妃': 600, '': 200, '貴人': 100}

          魏瓔珞的年薪是: 300

          使用pop方法刪除后的字典是: {'皇后': 1000, '皇貴妃': 800, '貴妃': 600, '': 200, '貴人': 100}

           

           

          除了pop()方法以外, Python中還有一個(gè)popitem()方法。它可以隨機(jī)刪除字典中的一對(duì)(一般刪除末尾一對(duì)),并且可以被后續(xù)的程序使用。我們經(jīng)常用此方法逐個(gè)刪除字典中的所有鍵值對(duì)。

          # 隨機(jī)刪除字典中的一對(duì)pop_name = name_dictionary.popitem()print('使用popitem刪除的是:',pop_name)print('隨機(jī)刪除字典中一對(duì)鍵值對(duì)后:',name_dictionary)pop2_name = name_dictionary.popitem()print('再次使用popitem刪除的是:',pop2_name)print('再次隨機(jī)刪除字典中一對(duì)鍵值對(duì)后:',name_dictionary)

           

          使用popitem刪除的是:('貴人', 100)

          隨機(jī)刪除字典中一對(duì)鍵值對(duì)后: {'皇后': 1000, '皇貴妃': 800, '貴妃': 600, '': 200}

          再次使用popitem刪除的是: ('', 200)

          再次隨機(jī)刪除字典中一對(duì)鍵值對(duì)后: {'皇后': 1000, '皇貴妃': 800, '貴妃': 600}

           

           

          如果需要?jiǎng)h除所有的鍵值對(duì),我們可以使用clear()方法清空所有的數(shù)據(jù)。但是需要注意del語(yǔ)句是刪除字典,此時(shí)打印刪除后的字典則出錯(cuò)。兩者是有區(qū)別的。

          # clear()方法清除字典中的所有數(shù)據(jù)print('原來(lái)字典的長(zhǎng)度是:',len(name_dictionary))name_dictionary.clear()print('使用clear清除字典中的所有內(nèi)容:',name_dictionary)print('清空以后字典的長(zhǎng)度是:',len(name_dictionary))# 使用del刪除字典del name_dictionary# 字典已經(jīng)被刪除,則再次打印則出錯(cuò):name 'name_dictionary' is not definedprint(name_dictionary)

           

          原來(lái)字典的長(zhǎng)度是: 3

          使用clear清除字典中的所有內(nèi)容: {}

          清空以后字典的長(zhǎng)度是: 0

          Traceback (most recent call last):

            File "/Users/seven_days_python/Forth_day_strcure/dict_p.py", line 139, in <module>

              print(name_dictionary)

          NameError: name 'name_dictionary' is not defined

          5.創(chuàng)建空字典

          在實(shí)際項(xiàng)目中,我們可能不知道字典中存放的內(nèi)容是什么。這時(shí),我們可以采用從空的字典開(kāi)始動(dòng)態(tài)創(chuàng)建,也就是在程序運(yùn)行的時(shí)候添加具體的內(nèi)容。

          常見(jiàn)的使用場(chǎng)景是:第一個(gè):需要用戶(hù)輸入數(shù)據(jù)存儲(chǔ)為字典;第二個(gè)是自動(dòng)生成大量的鍵值對(duì),比如爬蟲(chóng),爬取豆瓣電影的排名信息。我們可以把排名放入空的字典中,然后每次爬取一個(gè)電影,添加一個(gè)對(duì)應(yīng)的鍵值對(duì)。

          例子

          # 從空的字典開(kāi)始創(chuàng)建

          douban_movies = {} #定義空的字典

          douban_movies['排名'] = 1

          douban_movies['片名'] = '霸王別姬'

          douban_movies['主演'] = '張國(guó)榮、張豐毅、鞏俐'

          douban_movies['導(dǎo)演'] = '陳凱歌'

          print('從空的列表中構(gòu)建字典:',douban_movies)

           

          從空的列表中構(gòu)建字典: {'排名': 1, '片名': '霸王別姬', '主演': '張國(guó)榮、張豐毅、鞏俐', '導(dǎo)演': '陳凱歌'}

           

          4.5.4 內(nèi)置字典函數(shù)與方法

          Python字典包含了很多內(nèi)置函數(shù)和方法,部分如下所示。這些函數(shù)或者方法不需要死記硬背,用到的時(shí)候去網(wǎng)絡(luò)或書(shū)中查找即可。

          內(nèi)置函數(shù)

          cmp(dict1, dict2)      #比較兩個(gè)字典元素。

          len(dict)              #計(jì)算字典元素個(gè)數(shù),即鍵的總數(shù)。

          str(dict)              #輸出字典可打印的字符串表示。

           

          內(nèi)置方法

          字典名.clear()    # 刪除字典內(nèi)所有元素

          字典名.copy()    # 返回一個(gè)字典的淺復(fù)制

          字典名.fromkeys()    # 創(chuàng)建一個(gè)新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對(duì)應(yīng)的初始值

          字典名.get(key, default=None)    # 返回指定鍵的值,如果值不在字典中返回default

          字典名.items()    # 以列表返回可遍歷的(, ) 元組數(shù)組

          字典名.keys()    # 以列表返回一個(gè)字典所有的鍵

          字典名.setdefault(key, default=None)    # get()類(lèi)似, 但如果鍵不已經(jīng)存在于字典中,將會(huì)添加鍵并將值設(shè)為default

          字典名.update(dict2)    # 把字典dict2的鍵/值對(duì)更新到dict

          字典名.values()    # 以列表返回字典中的所有值

           

          例子

          # 內(nèi)置函數(shù)和方法

          print('計(jì)算字典的個(gè)數(shù):',len(name_dictionary))

          print('輸出字典可以打印的字符串',str(name_dictionary))

          # 內(nèi)置函數(shù)

          print('返回指定的貴妃的年薪',name_dictionary.get('貴妃'))

          print('以列表的形式返回字典中的所有關(guān)鍵字,',name_dictionary.keys()) #經(jīng)常被用到

          print('以元組形式返回所有的鍵值對(duì)',name_dictionary.items()) #經(jīng)常被用到

          print('返回鍵值中的所有值',name_dictionary.values())#經(jīng)常被用到

           

          計(jì)算字典的個(gè)數(shù): 6

          輸出字典可以打印的字符串 {'魏瓔珞': 300, '皇后': 1000, '皇貴妃': 800, '貴妃': 600, '': 200, '貴人': 100}

          返回指定的貴妃的年薪 600

          以列表的形式返回字典中的所有關(guān)鍵字, dict_keys(['魏瓔珞', '皇后', '皇貴妃', '貴妃', '', '貴人'])

          以元組形式返回所有的鍵值對(duì) dict_items([('魏瓔珞', 300), ('皇后', 1000), ('皇貴妃', 800), ('貴妃', 600), ('', 200), ('貴人', 100)])

          返回鍵值中的所有值 dict_values([300, 1000, 800, 600, 200, 100])

           

          在所有內(nèi)置方法中,update()方法經(jīng)常被用來(lái)合并兩個(gè)字典。如果傳給update方法的數(shù)據(jù)也含有相同的鍵,則它的值將被覆蓋。

          new_dictionary = {'皇后': 1000, '皇貴妃': 800, '貴妃': 600}print('第一個(gè)字典:',new_dictionary)name = {'魏瓔珞': 300, '貴人': 100}print('第二個(gè)字典:',name)# 使用update方法合并兩個(gè)字典new_dictionary.update(name)print('使用update方法合并兩個(gè)字典:', new_dictionary)# 如果有重復(fù)的值則替換name_new = {'皇后':1500, '貴人':110}# 使用update方法合并兩個(gè)字典new_dictionary.update(name_new)print('使用update方法合并兩個(gè)字典:', new_dictionary)

           

          第一個(gè)字典: {'皇后': 1000, '皇貴妃': 800, '貴妃': 600}

          第二個(gè)字典: {'魏瓔珞': 300, '貴人': 100}

          使用update方法合并兩個(gè)字典: {'皇后': 1000, '皇貴妃': 800, '貴妃': 600, '魏瓔珞': 300, '貴人': 100}

          使用update方法合并兩個(gè)字典: {'皇后': 1500, '皇貴妃': 800, '貴妃': 600, '魏瓔珞': 300, '貴人': 110}

          4.6  結(jié)合字典與列表

          字典和列表是python中經(jīng)常用到的兩個(gè)數(shù)據(jù)結(jié)構(gòu),并且都是可變的。有時(shí)候,我們需要把兩者結(jié)合起來(lái)使用。把一系列字典存儲(chǔ)在列表中,或?qū)⒘斜碜鳛橹捣旁谧值渲?,這稱(chēng)為嵌套。你可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。這在項(xiàng)目中經(jīng)常用到。

          什么時(shí)候用列表什么時(shí)候用字典呢?面對(duì)這個(gè)問(wèn)題筆者的想法是,當(dāng)你存取的數(shù)據(jù)類(lèi)型都是一樣的時(shí)候,使用列表,當(dāng)你存取的數(shù)據(jù)類(lèi)型不一樣時(shí)就用字典。這里說(shuō)明一下數(shù)據(jù)類(lèi)型不一樣不是指整形或者字符型。舉個(gè)例子:如果你需要存很多人的姓名,僅僅這一個(gè)屬性,就用列表來(lái)進(jìn)行處理,當(dāng)你要存取不僅僅是人名,包括年齡,性別,國(guó)籍等等這些信息時(shí),這時(shí)候用字典是最合適的。

           

          4.6.1 字典列表

          列表中的元素都是字典為字典列表。一般用在列表的元素信息比較復(fù)雜,單一的字符串不能滿(mǎn)足。

          例子

          # 兩個(gè)字典合并為一個(gè)列表dict_1 = {'name':'Python','age':18}dict_2 = {'name':'Java', 'age':'unknown'}name_list = [dict_1,dict_2]print(name_list)print('類(lèi)型是:',type(name_list))

           

           [{'name': 'Python', 'age': 18}, {'name': 'Java', 'age': 'unknown'}]

          類(lèi)型是: <class 'list'>

          4.6.2 在字典中存儲(chǔ)列表

          字典中的值有時(shí)候不是一個(gè),而是多個(gè)。這時(shí)需要把字典中的值變成一個(gè)列表,而不是單個(gè)的值。

          例子

          # 字典中存儲(chǔ)列表

          favorite_actor = {

              '魏瓔珞':['傅恒','皇上','富察皇后'],

              '皇上':['魏瓔珞','富察皇后','純妃','高貴妃'],

              '高貴妃':'皇上'

          }

          print(favorite_actor)

          print('類(lèi)型是',type(favorite_actor))

           

           

          結(jié)果為:

          {'魏瓔珞': ['傅恒', '皇上', '富察皇后'], '皇上': ['魏瓔珞', '富察皇后', '純妃', '高貴妃'], '高貴妃': '皇上'}

          類(lèi)型是 <class 'dict'>

           

          4.6.3 在字典中存儲(chǔ)字典

          字典的值也可以是字典,稱(chēng)為字典中存儲(chǔ)字典。一般用在鍵對(duì)應(yīng)的值是二維的信息,比如登錄某一個(gè)網(wǎng)站的用戶(hù)信息,用戶(hù)名是鍵,用戶(hù)名對(duì)應(yīng)的值比較部分,既包括用戶(hù)的地址、職業(yè)、收入等信息。

          例子

          # 字典中存儲(chǔ)字典

          users = {

              '愛(ài)上不該愛(ài)的人': {

                      '姓名':'魏瓔珞',

                      '職位':"妃子",

                      '年薪':'300',},

           

              '只愛(ài)皇上':{

                      '姓名':'高貴妃',

                      '職位':'貴妃',

                      '年薪':'800',}

          }

          print(users)

          print('類(lèi)型是',type(users))

           

           

          {'愛(ài)上不該愛(ài)的人': {'姓名': '魏瓔珞', '職位': '妃子', '年薪': '300'}, '只愛(ài)皇上': {'姓名': '高貴妃', '職位': '貴妃', '年薪': '800'}}

           

          類(lèi)型是 <class 'dict'>


          以上內(nèi)容摘自《零基礎(chǔ)輕松學(xué) Python》


          零基礎(chǔ)學(xué) Python,看下嘛


           只需7天時(shí)間,跨進(jìn)Python編程大門(mén),已有3800+加入

          【基礎(chǔ)】0基礎(chǔ)入門(mén)python,24小時(shí)有人快速解答問(wèn)題;
          【提高】40多個(gè)項(xiàng)目實(shí)戰(zhàn),老手可以從真實(shí)場(chǎng)景中學(xué)習(xí)python;
          【直播】不定期直播項(xiàng)目案例講解,手把手教你如何分析項(xiàng)目;
          【分享】?jī)?yōu)質(zhì)python學(xué)習(xí)資料分享,讓你在最短時(shí)間獲得有價(jià)值的學(xué)習(xí)資源;圈友優(yōu)質(zhì)資料或?qū)W習(xí)分享,會(huì)不時(shí)給予贊賞支持,希望每個(gè)優(yōu)質(zhì)圈友既能賺回加入費(fèi)用,也能快速成長(zhǎng),并享受分享與幫助他人的樂(lè)趣。
          【人脈】收獲一群志同道合的朋友,并且都是python從業(yè)者
          【價(jià)格】本著布道思想,只需 69元 加入一個(gè)能保證學(xué)習(xí)效果的良心圈子。

          【贈(zèng)予】?jī)r(jià)值109元 0基礎(chǔ)入門(mén)在線(xiàn)課程,免費(fèi)送給圈友們,供鞏固

          瀏覽 22
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  男女靠逼网站 | 免费的黄色国产视频 | 丁香婷婷六月 | 苍井空久久久久 | 超污视频在线免费观看 |