python中字典和串列的使用,在資料處理中應該是最常用的,這兩個熟練后基本可以應付大部分場景了,不過網上的基礎教程只告訴你串列、字典是什么,如何使用,很少做組合說明,
剛好作業中采集prometheus監控介面并做資料處理的時候,用了很多組合場景,列出幾個做一些分享,
串列(List)
序列是Python中最基本的資料結構,序列中的每個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推,
串列是最常用的Python資料型別,它可以作為一個方括號內的逗號分隔值出現,
串列的資料項不需要具有相同的型別
特點就是:可重復,型別可不同
常用方式
創建一個串列,只要把逗號分隔的不同資料項使用方括號括起來即可,如下所示:
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 將單個元素插入到list中
list3.insert(2, 'q') ##['a', 'b', 'q', 'c', 'd']
### 獲取串列的長度
print(len(list1)) ## 5
### 遍歷list
for name in list1:
print(name)
extend(擴展)與append(追加)的看起來類似,但實際上完全不同,
- extend接受一個引數,這個引數總是一個list,并且把這個list中每個元素添加到原list中,
- append接受一個引數,這個引數可以是任何資料型別,并且簡單地追加到list的尾部,
字典(dictionary)
字典是另一種可變容器模型,且可存盤任意型別物件,
- 鍵(key)必須是唯一的,可以用數字,字串或元組充當,而用串列就不行
- 同一個鍵出現兩次,最后出現的會更新前一個的值,
常用方式
字典的每個鍵值 key=>value 對用冒號:分割,每個鍵值對之間用逗號,分割,整個字典包括在花括號 {} 中 ,格式如下所示:
>>> 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 # 洗掉字典
組合使用
串列里也能嵌套串列,串列里能嵌套字典
字典里能嵌套字典,字典里也能嵌套串列
這是非常靈活的,
串列嵌套串列
這個用得不多,相對也比較簡單,直接看例子:
### 列印輸出字符 5
l = [[1,2],[3,4],[[5,6],[7,8]]]
>>> print(l[2][0][0])
5
### 將嵌套串列轉為非嵌套串列
>>> 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]
串列嵌套字典
在串列中嵌套字典應該是最常用的方式了,直接舉例說明:
li = [{'a': 1}, {'b': 2}, {'c': 3}]
###(1) 回圈獲取字典里每個鍵值對:
>>> for i in range(len(li)):
... for k, v in li[i].items():
... print(k, v)
...
a 1
b 2
c 3
###(2) 獲取字典里每個鍵值對(元組資料型別):
>>> for i in range(len(li)):
... for j in li[i].items():
... print(j)
...
('a', 1)
('b', 2)
('c', 3)
### 可以看到第二種獲取到的鍵值對是 元組資料型別,
字典嵌套字典
字典嵌套字典:字串作為key,字典作為value:
>>> s={'a':{0:'no',1:{'f':{0: 'no', 1: 'maybe'}}},'b':{}} #構造字典
>>> 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','記憶體':'16','硬碟':'500'},
'192.168.1.2':{'cpu':'3.22','記憶體':'64','硬碟':'700'},
'192.168.1.3':{'cpu':'1.99','記憶體':'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 記憶體 16 硬碟 500
192.168.1.2: cpu 3.22 記憶體 64 硬碟 700
192.168.1.3: cpu 1.99 記憶體 32 硬碟 800
字典嵌套串列
那么如何在字典里嵌套串列呢?
字典嵌套串列:字串作為key,串列作為value,
### 字典嵌套串列
dict = {
'水果':['蘋果','香蕉','橘子'],
'動物':['獅子','老虎','大象'],
'語言':['中文','英文','日語'],
}
### 訪問字典里的值
>>> print(dict['水果'])
['蘋果', '香蕉', '橘子']
### 訪問串列里的值
>>> print(dict['語言'][1])
英文
### 回圈列印輸出看效果
>>> for k, v in dict.items():
... print('\n', k, end=':')
... for x in v:
... print(x,end=' ')
...
水果:蘋果 香蕉 橘子
動物:獅子 老虎 大象
語言:中文 英文 日語
嵌套什么時候用
比如希望存盤年級前100名學生的各科成績時,由于學生是由成績進行排名的,串列是有序的資料型別,而字典是無序的資料型別,所以外面會用串列去存盤所有的資料,
而對于學生的各科成績來說,看重的不是有序,而是需要科目和成績一一對應,這才是最重要的,或者說當我想獲取到年紀第十名同學的語文成績,那么可以直接去獲取到串列對應的索引,和字典里對應的key就可以了,這樣就能得到相應的value,
至于嵌套中的排序用法,我們下一篇接著說,
---- 鋼鐵 [email protected] 06.28.2021
參考文獻
串列:https://www.runoob.com/python/python-lists.html
字典:https://www.runoob.com/python/python-dictionary.html
嵌套字典:https://www.pythonf.cn/read/100118#1.2 字典嵌套串列
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/288629.html
標籤:其他
