python的遍历字典里的键然后放到一个列表里_Python列表和字典互相嵌套怎么办?看完让你没有疑惑...
文 | 猿天罡
前言
前兩篇文章,我們學(xué)習(xí)了Python字典的基本用法和遍歷字典的三種方式。
為了讓小伙伴們不耗費(fèi)多余的注意力,我們舉的例子都盡可能的簡單,不信你回去看看,字典鍵對應(yīng)的值都是基本數(shù)據(jù)類型(字符串、數(shù)字等)。
其實(shí),字典里鍵對應(yīng)的值可以很復(fù)雜。
我們可以在字典中存儲列表,在列表中存儲字典,在字典中存儲字典等等。
Python中幾乎所有的數(shù)據(jù)類型,都可以存進(jìn)字典里。
學(xué)習(xí)不是一日之功,需擺正心態(tài),持之以恒,希望小伙伴們對學(xué)習(xí)一門語言抱有基本的耐心。
下面我們來開心地學(xué)習(xí)吧。
1.在字典里存儲列表
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)該在學(xué)生字典之中。
student = { 'name': 'kelvin', 'age': 18, 'course': ['數(shù)據(jù)結(jié)構(gòu)', '計(jì)算機(jī)網(wǎng)絡(luò)', '計(jì)算機(jī)組成原理', '操作系統(tǒng)']}注:也可以用雙引號包裹字符串(別的文章可不會提醒的這么詳細(xì))
這種情況下,要想訪問課程列表,和我們講的字典訪問方法一毛一樣(基礎(chǔ)挺重要的):student['course']。
下面我們來打印這個(gè)學(xué)生的信息。
# 概述學(xué)生基本信息print('姓名:', student['name'], '年齡:', student['age'])print('課程信息如下:')for course in student['course']: print("" + course)運(yùn)行結(jié)果如下:
說明(看得懂代碼可以跳過):
首先,我們創(chuàng)建了一個(gè)學(xué)生字典,字典里存儲了學(xué)生的姓名、年齡和課程信息。姓名和年齡都是基本數(shù)據(jù)類型(一個(gè)字符串另一個(gè)數(shù)字),課程是列表結(jié)構(gòu)。
然后,我們通過字典訪問方法字典['鍵'],一下子就把姓名和年齡拿到并輸出了。
最后,我們通過student['course']拿到了一個(gè)課程列表,但直接輸出格式太不好看了,所以我們對其進(jìn)行了遍歷,依次輸出學(xué)生要上的課程。
1.2字典里全是列表
還有一種字典里存列表的情況:鍵對應(yīng)的值全是列表。
遇到這種情況心里可以偷著樂,因?yàn)檠h(huán)遍歷的時(shí)候格式會很好看(后文會有解釋)。
學(xué)校老師需要每個(gè)學(xué)生的課程信息(因?yàn)橛械娜诉x課會不一樣)。
這個(gè)時(shí)候把學(xué)生姓名做鍵(實(shí)際情況下是用學(xué)號,姓名會重復(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("" + c)因?yàn)槊總€(gè)鍵對應(yīng)的都是列表,所以需要再使用一個(gè)for循環(huán)來遍歷學(xué)生課程列表。
解釋(看得懂代碼可以跳過):
首先,使用外層for循環(huán),依次將courses字典里的鍵和值分別賦值給變量name和course。
然后,name對應(yīng)的值是個(gè)簡單的字符串,所以我們直接打印輸出了。
最后,遍歷course列表,格式化地打印學(xué)生所學(xué)課程。
再注:字典里不全是字典也可以用雙層循環(huán),只不過我們需要加個(gè)if判斷,如果值是列表才能進(jìn)入到內(nèi)層循環(huán)。
2.在字典里存儲字典
字典里存儲字典很像俄羅斯套娃。
循環(huán)(打開)一層字典后,面對的還是字典,真是讓人驚喜又驚喜。
和在字典中存儲列表一樣,在字典里存儲字典也有兩種情況。
聰明的小伙伴已經(jīng)猜到了:在字典里不全是字典和在字典里全是字典。
看著讓人有點(diǎn)頭暈(建議看下前面的小標(biāo)題清醒一下)。
因?yàn)樵谧值淅锊蝗亲值浔容^簡單(不理解的歡迎私信),所以我們重點(diǎn)講講在字典里全是字典的情況。
學(xué)校需要學(xué)生信息表(不是學(xué)生所上課程信息)。
如果要用字典來存儲的話,可以這樣。
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字典里面存儲的依然是以學(xué)生姓名為鍵,學(xué)生其他信息為值的字典。
更過分地是學(xué)生其他信息里竟然還有個(gè)學(xué)生列表。
看我們怎么處理這些數(shù)據(jù)。
for name, student in students.items(): print("姓名: 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的python的遍历字典里的键然后放到一个列表里_Python列表和字典互相嵌套怎么办?看完让你没有疑惑...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python list sort by,
- 下一篇: python简单学(一)基础语法