python實現(xiàn)有序遍歷dict(字典)
python有序遍歷dict(字典)
大家都知道dict是無序的,這篇文章介紹dict的有序遍歷。這里我們主要用到一個python的方法sorted()。
一、sorted()方法介紹
內(nèi)建函數(shù)sorted方法,可以對所有可迭代的對象進(jìn)行排序操作。
1.方法-sorted(iterable, key=None, reverse=False):
iterable
,可以看到其中第一個參數(shù)是可迭代對象;key
,主要是用來進(jìn)行比較的元素,只有一個參數(shù),具體的函數(shù)的參數(shù)就是取自于可迭代對象中,指定可迭代對象中的一個元素來進(jìn)行排序;reverse
,是否反轉(zhuǎn),默認(rèn)情況下不反轉(zhuǎn);
2.sorted()的理解,對list的排序為例:
def test_sorted(): L = [('b', 2), ('a', 1), ('c', 3), ('d', 0)] print(sorted(L,key=lambda x:x[0])) # 用第一項排序 print(sorted(L,key=lambda x:x[1])) # 用第二項排序 test_sorted() 輸出: [('a', 1), ('b', 2), ('c', 3), ('d', 0)] [('d', 0), ('a', 1), ('b', 2), ('c', 3)]
二、dict按key有序遍歷
def sort_by_key(dic): for key in sorted(dic): print(key,dic[key]) dic = {1:2,4:2,6:1,0:5} sort_by_key(dic) 輸出: 0 5 1 2 4 2 6 1
三、dict按value有序遍歷
def sort_by_value(dic): for key,value in sorted(dic.items(),key=lambda x:x[1]): print(key,value) dic = {1:2,4:2,6:1,0:5} sort_by_value(dic) 輸出: 6 1 1 2 4 2 0 5
python的dict用法
一、dict
python中的dict(字典)就是來保存這種映射,在dict中每一個key和value 是一一對應(yīng)的。
【E1】新來同學(xué)Gaven成績86,編寫一個dict,把新同學(xué)成績添加進(jìn)去。
d = { 'Alice': 45, 'Bob': 60, 'Candy': 75, 'David': 86, 'Ellena': 49 } d ['Gaven'] =86 print(d) #{'Alice': 45, 'Candy': 75, 'David': 86, 'Ellena': 49, 'Gaven': 86, 'Bob': 60}
二、讀取dict 元素
創(chuàng)建一個dict ,dict 通過key找到對應(yīng)的value的功能。還可以通過key來獲取對應(yīng)的value,dict提供get方法,把key當(dāng)作參數(shù)傳遞給get方法。當(dāng)Key不存在時也不會出錯。
【E2】根據(jù)如下dict,打印出Alice, Bob, Candy, Mimi, David的成績,當(dāng)同學(xué)不存在時,打印None。
d ={ 'Alice':45, 'Bob':60, 'Candy':75, 'David':86, 'Ellena':49, 'Gaven':86 } print(d['Alice']) print(d['Bob']) print(d['Candy']) print(d['David']) print(d['Ellena']) print(d['Gaven']) print(d.get('Dodo'))
三、添加dict元素
dict和tuple不一樣,dict是可變的,我們隨時可以往dict中添加新的key-value,value可以是任意類型的元素,可以是list、tuple等,
【E3】Alice、Bob、Candy的最近三次的成績分別是[50, 61, 66],[80, 61, 66],[88, 75, 90],請更新dict,使得dict可以保存同學(xué)多次的成績。
d = { 'Alice': [45], 'Bob': [60], 'Candy': [75], } d['Alice'] =[50,61,66] d['Bob'] =[80,61,66] d['Candy'] =[88,75,90] print(d) #{'Bob': [80, 61, 66], 'Alice': [50, 61, 66], 'Candy': [88, 75, 90]}
賦值語句有兩個功能:
- 1.當(dāng)key不存在時,往dict中添加對應(yīng)的key:value元素。
- 2.當(dāng)key存在時,會更新dict,用新的value 替換原來的value。
在使用賦值語句往dict中添加元素時,為了避免不必要的覆蓋問題,我們需要先判斷key是否存在,然后再做更新。
【E4】請更新Alice的成績?yōu)?0,并把舊的成績記錄下來。
d = { 'Alice': 45, 'Bob': 60, 'Candy': 75, 'David': 86, 'Ellena': 49 } d['Alice'] =60 print(d)
四、刪除dict元素
當(dāng)我們不需要這個元素時,需要把元素從dict中刪除,pop()方法快速刪除元素。但需要指定需要刪除元素的key,并返回value。
<**注>**pop()方法的參數(shù)是dict中的key,當(dāng)key不存在時,同樣會引起錯誤。
d = { 'Alice': 45, 'Bob': 60, 'Candy': 75, 'David': 86, 'Ellena': 49 } print(d) alice_score =d.pop('Alice') print(alice_score) print(d) bob_score =d.pop('Bob') print(bob_score) print(d)
五、dict的特點查找速度快
查找速度快
dict的第一個特點是查找速度快,而list的查找速度隨著元素增加而逐漸下降。dict的缺點是占用內(nèi)存大,還會浪費(fèi)很多內(nèi)容,list正好相反,占用內(nèi)存小,但是查找速度慢。
有序與無序
在python3.5之前,dict元素插入順序是無序的。python3.5之后元素有序。
python遍歷dict
遍歷dict有兩種方法
- 第一種是遍歷dict的所有key,并通過key獲得對應(yīng)的value。
- 第二種方法是通過dict提供的items()方法,items()方法會返回dict中所有的元素,每個元素包含key和value。
【E5】以此輸出同學(xué)的每次成績。
d = {‘Alice’: [50, 61, 66], ‘Bob’: [80, 61, 66], ‘Candy’: [88, 75, 90]}
d = {'Alice': [50, 61, 66], 'Bob': [80, 61, 66], 'Candy': [88, 75, 90]} for key,value in d.items(): if value > 60: print(key,value) ==> #('Bob', [80, 61, 66]) #('Alice', [50, 61, 66]) #('Candy', [88, 75, 90])
六、清除所有元素
dict 提供clear()函數(shù),直接清除dict 中所有元素。
d = {'Alice': [50, 61, 66], 'Bob': [80, 61, 66], 'Candy': [88, 75, 90]} print(d) # ==> {'Alice': [50, 61, 66], 'Bob': [80, 61, 66], 'Candy': [88, 75, 90]} d.clear() print(d) #====》[]
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
在CentOS 7中使用Python 3執(zhí)行系統(tǒng)命令的詳細(xì)教程
使用os.system()這個方法簡單直接,但它不返回命令的輸出,只返回命令的退出狀態(tài),如果你只需要知道命令是否成功執(zhí)行,這個方法就足夠了,這篇文章主要介紹了在CentOS 7中使用Python 3執(zhí)行系統(tǒng)命令的詳細(xì)教程,需要的朋友可以參考下2024-02-02Python 利用argparse模塊實現(xiàn)腳本命令行參數(shù)解析
這篇文章主要介紹了Python 利用argparse模塊實現(xiàn)腳本命令行參數(shù)解析,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12Python-typing: 類型標(biāo)注與支持 Any類型詳解
這篇文章主要介紹了Python-typing: 類型標(biāo)注與支持 Any類型詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-05-05