python 字典和列表嵌套用法詳解
python中字典和列表的使用,在數(shù)據(jù)處理中應(yīng)該是最常用的,這兩個(gè)熟練后基本可以應(yīng)付大部分場(chǎng)景了。不過網(wǎng)上的基礎(chǔ)教程只告訴你列表、字典是什么,如何使用,很少做組合說明。
剛好工作中采集prometheus監(jiān)控接口并做數(shù)據(jù)處理的時(shí)候,用了很多組合場(chǎng)景,列出幾個(gè)做一些分享。
列表(List)
序列是Python中最基本的數(shù)據(jù)結(jié)構(gòu)。序列中的每個(gè)元素都分配一個(gè)數(shù)字 - 它的位置,或索引,第一個(gè)索引是0,第二個(gè)索引是1,依此類推。
列表是最常用的Python數(shù)據(jù)類型,它可以作為一個(gè)方括號(hào)內(nèi)的逗號(hào)分隔值出現(xiàn)。
列表的數(shù)據(jù)項(xiàng)不需要具有相同的類型
特點(diǎn)就是:可重復(fù),類型可不同
常用方式
創(chuàng)建一個(gè)列表,只要把逗號(hào)分隔的不同數(shù)據(jù)項(xiàng)使用方括號(hào)括起來即可。如下所示:
list1 = ['apple', 'banana', 2008, 2021] list2 = [1, 2, 3, 4, 5 ] list3 = ["a", "b", "c", "d"] ### 向list中增加元素 list1.append(3) ## ['apple', 'banana', 2008, 2021, 3] ### 使用extend用來連接list list1.extend([7, 8]) ##['apple', 'banana', 2008, 2021, 3, 7, 8] ### insert 將單個(gè)元素插入到list中 list3.insert(2, 'q') ##['a', 'b', 'q', 'c', 'd'] ### 獲取列表的長度 print(len(list1)) ## 5 ### 遍歷list for name in list1: print(name)
extend(擴(kuò)展)與append(追加)的看起來類似,但實(shí)際上完全不同。
- extend接受一個(gè)參數(shù),這個(gè)參數(shù)總是一個(gè)list,并且把這個(gè)list中每個(gè)元素添加到原list中。
- append接受一個(gè)參數(shù),這個(gè)參數(shù)可以是任何數(shù)據(jù)類型,并且簡(jiǎn)單地追加到list的尾部。
字典(dictionary)
字典是另一種可變?nèi)萜髂P?,且可存?chǔ)任意類型對(duì)象。
- 鍵(key)必須是唯一的,可以用數(shù)字,字符串或元組充當(dāng),而用列表就不行
- 同一個(gè)鍵出現(xiàn)兩次,最后出現(xiàn)的會(huì)更新前一個(gè)的值。
常用方式
字典的每個(gè)鍵值 key=>value
對(duì)用冒號(hào):
分割,每個(gè)鍵值對(duì)之間用逗號(hào),
分割,整個(gè)字典包括在花括號(hào) {}
中 ,格式如下所示:
>>> dict = {'a': 1, 'b': 2, 'b': '3'} >>> print(dict) {'a': 1, 'b': '3'} ### 訪問字典里的值 >>> print(dict['b']) 3 ### 更新和添加字典 >>> dict['a'] = 8 >>> dict['c'] = 'cc' >>> print(dict['a']) 8 >>> print(dict['c']) cc ### 刪除字典元素 >>> del dict['a'] >>> print(dict) {'b': '3', 'c': 'cc'} >>> dict.clear() # 清空字典所有條目 >>> del dict # 刪除字典
組合使用
列表里也能嵌套列表,列表里能嵌套字典
字典里能嵌套字典,字典里也能嵌套列表
這是非常靈活的。
列表嵌套列表
這個(gè)用得不多,相對(duì)也比較簡(jiǎn)單,直接看例子:
### 打印輸出字符 5 l = [[1,2],[3,4],[[5,6],[7,8]]] >>> print(l[2][0][0]) 5 ### 將嵌套列表轉(zhuǎn)為非嵌套列表 >>> a = [[1,2,3],[4,5,6],[7],[8,9]] >>> for i in a: ... t.extend(i) ... >>> print(t) [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 7, 8, 9]
列表嵌套字典
在列表中嵌套字典應(yīng)該是最常用的方式了,直接舉例說明:
li = [{'a': 1}, {'b': 2}, {'c': 3}] ###(1) 循環(huán)獲取字典里每個(gè)鍵值對(duì): >>> for i in range(len(li)): ... for k, v in li[i].items(): ... print(k, v) ... a 1 b 2 c 3 ###(2) 獲取字典里每個(gè)鍵值對(duì)(元組數(shù)據(jù)類型): >>> for i in range(len(li)): ... for j in li[i].items(): ... print(j) ... ('a', 1) ('b', 2) ('c', 3) ### 可以看到第二種獲取到的鍵值對(duì)是 元組數(shù)據(jù)類型。
字典嵌套字典
字典嵌套字典:字符串作為key,字典作為value:
>>> s={'a':{0:'no',1:{'f':{0: 'no', 1: 'maybe'}}},'b':{}} #構(gòu)造字典 >>> s['a'][0] # 取值 'no' >>> s['a'][1] {'f': {0: 'no', 1: 'maybe'}} >>> s['a'][1]['f'][1] 'maybe'
### 字典嵌套字典 dict = { '192.168.1.1':{'cpu':'0.23','內(nèi)存':'16','硬盤':'500'}, '192.168.1.2':{'cpu':'3.22','內(nèi)存':'64','硬盤':'700'}, '192.168.1.3':{'cpu':'1.99','內(nèi)存':'32','硬盤':'800'}, } ### for遍歷 >>> for k,v in dict.items(): ... print('\n',k,end=': ') ... for x,y in v.items(): ... print(x,y,end=' ') ... 192.168.1.1: cpu 0.23 內(nèi)存 16 硬盤 500 192.168.1.2: cpu 3.22 內(nèi)存 64 硬盤 700 192.168.1.3: cpu 1.99 內(nèi)存 32 硬盤 800
字典嵌套列表
那么如何在字典里嵌套列表呢?
字典嵌套列表:字符串作為key,列表作為value。
### 字典嵌套列表 dict = { '水果':['蘋果','香蕉','橘子'], '動(dòng)物':['獅子','老虎','大象'], '語言':['中文','英文','日語'], } ### 訪問字典里的值 >>> print(dict['水果']) ['蘋果', '香蕉', '橘子'] ### 訪問列表里的值 >>> print(dict['語言'][1]) 英文 ### 循環(huán)打印輸出看效果 >>> for k, v in dict.items(): ... print('\n', k, end=':') ... for x in v: ... print(x,end=' ') ... 水果:蘋果 香蕉 橘子 動(dòng)物:獅子 老虎 大象 語言:中文 英文 日語
嵌套什么時(shí)候用
比如希望存儲(chǔ)年級(jí)前100名學(xué)生的各科成績時(shí),由于學(xué)生是由成績進(jìn)行排名的,列表是有序的數(shù)據(jù)類型,而字典是無序的數(shù)據(jù)類型,所以外面會(huì)用列表去存儲(chǔ)所有的數(shù)據(jù)。
而對(duì)于學(xué)生的各科成績來說,看重的不是有序,而是需要科目和成績一一對(duì)應(yīng),這才是最重要的?;蛘哒f當(dāng)我想獲取到年紀(jì)第十名同學(xué)的語文成績,那么可以直接去獲取到列表對(duì)應(yīng)的索引,和字典里對(duì)應(yīng)的key就可以了,這樣就能得到相應(yīng)的value。
至于嵌套中的排序用法
參考文獻(xiàn)
列表:https://www.runoob.com/python/python-lists.html
字典:https://www.runoob.com/python/python-dictionary.html
嵌套字典:https://www.pythonf.cn/read/100118#1.2字典嵌套列表
到此這篇關(guān)于python 字典和列表嵌套用法的文章就介紹到這了,更多相關(guān)python 字典和列表嵌套內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
發(fā)工資啦!教你用Python實(shí)現(xiàn)郵箱自動(dòng)群發(fā)工資條
這篇文章主要介紹了發(fā)工資啦!教你用Python實(shí)現(xiàn)郵箱自動(dòng)群發(fā)工資條,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下2021-05-05Python實(shí)現(xiàn)人臉識(shí)別并進(jìn)行視頻跟蹤打碼
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)人臉識(shí)別并進(jìn)行視頻跟蹤打碼效果,羞羞的畫面統(tǒng)統(tǒng)打上馬賽克,感興趣的小伙伴可以了解一下2023-03-03構(gòu)建Python包的五個(gè)簡(jiǎn)單準(zhǔn)則簡(jiǎn)介
這篇文章主要介紹了構(gòu)建Python包的五個(gè)簡(jiǎn)單準(zhǔn)則簡(jiǎn)介,在Github開源合作日趨主流的今天,健壯的Python包的構(gòu)建成為開發(fā)者必須要考慮到的問題,本文提出了五項(xiàng)建議,需要的朋友可以參考下2015-06-06Python編程實(shí)現(xiàn)下載器自動(dòng)爬取采集B站彈幕示例
這篇文章主要介紹了使用Python編程來實(shí)現(xiàn)一個(gè)下載器可以自動(dòng)爬取采集B站彈幕的示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2021-10-10python中strip(),lstrip(),rstrip()函數(shù)的使用講解
這篇文章主要介紹了python中strip(),lstrip(),rstrip()函數(shù)的使用講解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11一文帶你掌握Python中enumerate函數(shù)和for循環(huán)的對(duì)比
在Python編程中,循環(huán)是一項(xiàng)常見的任務(wù),而for循環(huán)是最常見的一種,然而,Python提供了enumerate函數(shù),它允許在迭代過程中訪問元素的同時(shí)獲得它們的索引,下面我們就來學(xué)習(xí)一下二者的區(qū)別吧2023-11-11