黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Python字典嵌套

系統(tǒng) 2113 0

文 | 猿天罡

前言

前兩篇文章,我們學(xué)習(xí)了Python字典的基本用法和遍歷字典的三種方式

為了讓小伙伴們不耗費(fèi)多余的注意力,我們舉的例子都盡可能的簡(jiǎn)單,不信你回去看看,字典鍵對(duì)應(yīng)的值都是基本數(shù)據(jù)類型(字符串、數(shù)字等)。

其實(shí),字典里鍵對(duì)應(yīng)的值可以很復(fù)雜。

我們可以在字典中存儲(chǔ)列表,在列表中存儲(chǔ)字典,在字典中存儲(chǔ)字典等等。

Python中幾乎所有的數(shù)據(jù)類型,都可以存進(jìn)字典里。

學(xué)習(xí)不是一日之功,需擺正心態(tài),持之以恒,希望小伙伴們對(duì)學(xué)習(xí)一門語(yǔ)言抱有基本的耐心。

下面我們來(lái) 開(kāi)心地 學(xué)習(xí)吧。

1.在字典里存儲(chǔ)列表

1.1字典里不全是列表

筆者在大學(xué)的時(shí)候,需要學(xué)習(xí)四門基礎(chǔ)專業(yè)課。

            
               course 
              
                =
              
              
                [
              
              
                '數(shù)據(jù)結(jié)構(gòu)'
              
              
                ,
              
              
                '計(jì)算機(jī)網(wǎng)絡(luò)'
              
              
                ,
              
              
                '計(jì)算機(jī)組成原理'
              
              
                ,
              
              
                '操作系統(tǒng)'
              
              
                ]
              
            
          

如果我們聲明一個(gè)學(xué)生字典,則專業(yè)課列表應(yīng)該在其字典之中。

            
              student 
              
                =
              
              
                {
              
              
                'name'
              
              
                :
              
              
                'kelvin'
              
              
                ,
              
              
                'age'
              
              
                :
              
              
                18
              
              
                ,
              
              
                'course'
              
              
                :
              
              
                [
              
              
                '數(shù)據(jù)結(jié)構(gòu)'
              
              
                ,
              
              
                '計(jì)算機(jī)網(wǎng)絡(luò)'
              
              
                ,
              
              
                '計(jì)算機(jī)組成原理'
              
              
                ,
              
              
                '操作系統(tǒng)'
              
              
                ]
              
              
                }
              
            
          

注:也可以用雙引號(hào)包裹字符串(別的文章可不會(huì)提醒的這么詳細(xì))

這種情況下,要想訪問(wèn)課程列表,和我們講的字典訪問(wèn)方法一毛一樣(基礎(chǔ)挺重要的): student['course']

下面我們來(lái)打印這個(gè)學(xué)生的信息。

            
              
                # 概述學(xué)生基本信息
              
              
                print
              
              
                (
              
              
                '姓名:'
              
              
                ,
              
               student
              
                [
              
              
                'name'
              
              
                ]
              
              
                ,
              
              
                '年齡:'
              
              
                ,
              
               student
              
                [
              
              
                'age'
              
              
                ]
              
              
                )
              
              
                print
              
              
                (
              
              
                '課程信息如下:'
              
              
                )
              
              
                for
              
               course 
              
                in
              
               student
              
                [
              
              
                'course'
              
              
                ]
              
              
                :
              
              
                print
              
              
                (
              
              
                "\t"
              
              
                +
              
               course
              
                )
              
            
          

運(yùn)行結(jié)果如下:

Python字典嵌套_第1張圖片

說(shuō)明(看得懂代碼可以跳過(guò)):

首先,我們創(chuàng)建了一個(gè)學(xué)生字典,字典里存儲(chǔ)了學(xué)生的姓名、年齡和課程信息。姓名和年齡都是基本數(shù)據(jù)類型(一個(gè)字符串另一個(gè)數(shù)字),課程是列表結(jié)構(gòu)。

然后,我們通過(guò)字典訪問(wèn)方法 字典['鍵'] ,一下子就把姓名和年齡拿到并輸出了。

最后,我們通過(guò) student['course'] 拿到了一個(gè)課程列表,但直接輸出格式太不好看了,所以我們對(duì)其進(jìn)行了遍歷,依次輸出學(xué)生要上的課程。

1.2字典里全是列表

還有一種字典里存列表的情況:鍵對(duì)應(yīng)的值全是列表。

遇到這種情況心里可以偷著樂(lè),因?yàn)檠h(huán)遍歷的時(shí)候格式會(huì)很好看(后文會(huì)有解釋)。

學(xué)校老師需要每個(gè)學(xué)生的課程信息(因?yàn)橛械娜诉x課會(huì)不一樣)。

這個(gè)時(shí)候把學(xué)生姓名做鍵(實(shí)際情況下是用學(xué)號(hào),姓名會(huì)重復(fù)),以學(xué)生課程列表為值可以組成字典。

            
              courses 
              
                =
              
              
                {
              
              
                'kelvin'
              
              
                :
              
              
                [
              
              
                '數(shù)據(jù)結(jié)構(gòu)'
              
              
                ,
              
              
                '計(jì)算機(jī)網(wǎng)絡(luò)'
              
              
                ,
              
              
                '計(jì)算機(jī)組成原理'
              
              
                ,
              
              
                '操作系統(tǒng)'
              
              
                ]
              
              
                ,
              
              
                'vicky'
              
              
                :
              
              
                [
              
              
                'xx經(jīng)濟(jì)學(xué)'
              
              
                ,
              
              
                '西方經(jīng)濟(jì)學(xué)'
              
              
                ,
              
              
                '統(tǒng)計(jì)學(xué)'
              
              
                ,
              
              
                '發(fā)展經(jīng)濟(jì)學(xué)'
              
              
                ]
              
              
                }
              
            
          

我們把多個(gè)學(xué)生的課程表打印輸出。

            
              
                for
              
               name
              
                ,
              
               course 
              
                in
              
               courses
              
                .
              
              items
              
                (
              
              
                )
              
              
                :
              
              
                print
              
              
                (
              
              name 
              
                +
              
              
                '同學(xué)所學(xué)課程:'
              
              
                )
              
              
                for
              
               c 
              
                in
              
               course
              
                :
              
              
                print
              
              
                (
              
              
                "\t"
              
              
                +
              
               c
              
                )
              
            
          

因?yàn)槊總€(gè)鍵對(duì)應(yīng)的都是列表,所以需要再使用一個(gè) for 循環(huán)來(lái)遍歷學(xué)生課程列表。

解釋(看得懂代碼可以跳過(guò)):

首先,使用外層 for 循環(huán),依次將courses字典里的鍵和值分別賦值給變量 name course

然后, name 對(duì)應(yīng)的值是個(gè)簡(jiǎn)單的字符串,所以我們直接打印輸出了。

最后,遍歷 course 列表,格式化地打印學(xué)生所學(xué)課程。

再注:字典里不全是字典也可以用雙層循環(huán),只不過(guò)我們需要加個(gè)if判斷,如果值是列表才能進(jìn)入到內(nèi)層循環(huán)。

2.在字典里存儲(chǔ)字典

字典里存儲(chǔ)字典就很像俄羅斯套娃。

Python字典嵌套_第2張圖片

循環(huán)(打開(kāi))一層字典后,面對(duì)的還是字典,真是讓人驚喜又驚喜。

和在字典中存儲(chǔ)列表一樣,在字典里存儲(chǔ)字典也有兩種情況。

聰明的小伙伴已經(jīng)猜到了:在字典里不全是字典和在字典里全是字典。

看著讓人有點(diǎn)頭暈(建議看下前面的小標(biāo)題清醒一下)。

因?yàn)樵谧值淅锊蝗亲值浔容^簡(jiǎn)單(不理解的歡迎私信),所以我們重點(diǎn)講講在字典里全是字典的情況。

學(xué)校需要學(xué)生信息表(不是學(xué)生所上課程信息)。

如果要用字典來(lái)存儲(chǔ)的話,可以這樣。

            
              students 
              
                =
              
              
                {
              
              
                'kelvin'
              
              
                :
              
              
                {
              
              
                'age'
              
              
                :
              
              
                18
              
              
                ,
              
              
                'course'
              
              
                :
              
              
                [
              
              
                '數(shù)據(jù)結(jié)構(gòu)'
              
              
                ,
              
              
                '計(jì)算機(jī)網(wǎng)絡(luò)'
              
              
                ,
              
              
                '計(jì)算機(jī)組成原理'
              
              
                ,
              
              
                '操作系統(tǒng)'
              
              
                ]
              
              
                }
              
              
                ,
              
              
                'vicky'
              
              
                :
              
              
                {
              
              
                'age'
              
              
                :
              
              
                19
              
              
                ,
              
              
                'course'
              
              
                :
              
              
                [
              
              
                'xx經(jīng)濟(jì)學(xué)'
              
              
                ,
              
              
                '西方經(jīng)濟(jì)學(xué)'
              
              
                ,
              
              
                '統(tǒng)計(jì)學(xué)'
              
              
                ,
              
              
                '發(fā)展經(jīng)濟(jì)學(xué)'
              
              
                ]
              
              
                }
              
              
                }
              
            
          

可以看到,外層students字典里面存儲(chǔ)的依然是以學(xué)生姓名為鍵,學(xué)生其他信息為值的字典。

更過(guò)分地是學(xué)生其他信息里竟然還有個(gè)學(xué)生列表。

看我們?cè)趺刺幚磉@些數(shù)據(jù)。

            
              
                for
              
               name
              
                ,
              
               student 
              
                in
              
               students
              
                .
              
              items
              
                (
              
              
                )
              
              
                :
              
              
                print
              
              
                (
              
              
                "姓名:"
              
              
                ,
              
               name
              
                ,
              
              
                ",年齡:"
              
              
                ,
              
               student
              
                [
              
              
                'age'
              
              
                ]
              
              
                ,
              
              
                ",所學(xué)課程:"
              
              
                )
              
              
                for
              
               course 
              
                in
              
               student
              
                [
              
              
                'course'
              
              
                ]
              
              
                :
              
              
                print
              
              
                (
              
              
                "\t"
              
              
                +
              
               course
              
                )
              
            
          

我們先來(lái)看看效果圖:

Python字典嵌套_第3張圖片

常規(guī)嘮叨(看懂代碼的可以跳過(guò)):

首先,我們定義了一個(gè)學(xué)生字典,里面有兩個(gè)學(xué)生的信息。

學(xué)生信息是以姓名為鍵,其他信息為值。

然后,我們遍歷最外層字典,然后依次將 students 的鍵和值賦值給變量 name student

接著,因?yàn)閷W(xué)生姓名賦值給了變量 name ,所以我們直接打印變量 name

學(xué)生的年齡信息存儲(chǔ)在 student 字典(內(nèi)層字典)里的,可以通過(guò)基本的字典訪問(wèn)方法 student['age'] 拿到并打印出來(lái)。

最后,遍歷 student['course'] ,即課程列表,格式化輸出所學(xué)課程。

3.在列表里存儲(chǔ)字典

在列表里也可以存儲(chǔ)字典哦。

列表和字典的主要區(qū)別是前者沒(méi)有鍵而已。

這并不影響其存儲(chǔ)能力,事實(shí)上,列表也幾乎可以存儲(chǔ)所有的數(shù)據(jù)類型。

除了用字典存儲(chǔ)多個(gè)學(xué)生信息外,我們還可以用列表來(lái)存儲(chǔ)。

            
              student1 
              
                =
              
              
                {
              
              
                'name'
              
              
                :
              
              
                'kelvin'
              
              
                ,
              
              
                'age'
              
              
                :
              
              
                18
              
              
                ,
              
              
                'course'
              
              
                :
              
              
                [
              
              
                '數(shù)據(jù)結(jié)構(gòu)'
              
              
                ,
              
              
                '計(jì)算機(jī)網(wǎng)絡(luò)'
              
              
                ,
              
              
                '計(jì)算機(jī)組成原理'
              
              
                ,
              
              
                '操作系統(tǒng)'
              
              
                ]
              
              
                }
              
              

student2 
              
                =
              
              
                {
              
              
                'name'
              
              
                :
              
              
                'vicky'
              
              
                ,
              
              
                'age'
              
              
                :
              
              
                19
              
              
                ,
              
              
                'course'
              
              
                :
              
              
                [
              
              
                'xx經(jīng)濟(jì)學(xué)'
              
              
                ,
              
              
                '西方經(jīng)濟(jì)學(xué)'
              
              
                ,
              
              
                '統(tǒng)計(jì)學(xué)'
              
              
                ,
              
              
                '發(fā)展經(jīng)濟(jì)學(xué)'
              
              
                ]
              
              
                }
              
              
students 
              
                =
              
              
                [
              
              student1
              
                ,
              
               student2
              
                ]
              
            
          

我們先是定義了兩個(gè)學(xué)生字典,然后把它們存儲(chǔ)到了 students 列表中了。

怎么遍歷輸出字典列表的信息呢?

            
              
                for
              
               student 
              
                in
              
               students
              
                :
              
              
                print
              
              
                (
              
              
                "姓名:"
              
              
                ,
              
               student
              
                [
              
              
                'name'
              
              
                ]
              
              
                ,
              
              
                ",年齡:"
              
              
                ,
              
               student
              
                [
              
              
                'age'
              
              
                ]
              
              
                ,
              
              
                ",所學(xué)課程:"
              
              
                )
              
              
                for
              
               course 
              
                in
              
               student
              
                [
              
              
                'course'
              
              
                ]
              
              
                :
              
              
                print
              
              
                (
              
              
                "\t"
              
              
                +
              
               course
              
                )
              
            
          

直接上運(yùn)行結(jié)果:

Python字典嵌套_第4張圖片

沒(méi)人聽(tīng)的碎碎念(看得懂代碼可以跳過(guò)):

首先,外層 for 循環(huán)依次取出存儲(chǔ)其中的字典(student1和student2)并把它們依次賦值給變量 student

然后,此時(shí)變量 student 就相當(dāng)于是某一個(gè)學(xué)生字典,所以我們可以通過(guò) student['name'] student['age'] 訪問(wèn)到學(xué)生的姓名和年齡。

最后,因?yàn)? student['course'] 存儲(chǔ)的是課程列表,所以需要循環(huán)打印列表。

結(jié)尾語(yǔ)

Python語(yǔ)法簡(jiǎn)單且靈活,本文講述的字典和列表嵌套可以當(dāng)作拋磚引玉,希望能起到舉一反三的效果。

如果你對(duì)文中講述的內(nèi)容還有疑惑,歡迎和我交流,我們一起在討論中進(jìn)步。

掃碼關(guān)注「猿天罡」

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論