python list裡面是dict時排序

2021-08-13 02:05:45 字數 1027 閱讀 7955

剛開始我用的是氣泡排序:

def sort(jsonlist):#氣泡排序,按位址大小重新排序

for i in range(len(jsonlist)-1):

for j in range(len(jsonlist)-1-i):

if jsonlist[j]['modbus從站id'] == jsonlist[j+1]['modbus從站id']:

if jsonlist[j]['起始位址'] > jsonlist[j+1]['起始位址']:

jsonlist[j],jsonlist[j+1] = jsonlist[j+1],jsonlist[j]

# print json.dumps(jsonlist,ensure_ascii=false,indent=4)

return jsonlist

if __name__=="__main__":

addrlist = [,,,

,,,,

]t = sort(addrlist)

處理資料較小時,速度還行,但是資料過萬時,速度就特別慢,尤其是在arm,要十多分鐘....
後來找到另一種方法就快了10倍不止:
def sort(jsonlist):

t = {}

addrlist = list()

for item in jsonlist:

if item['modbus從站id'] not in t.keys():

t[item['modbus從站id']] = list()

else:

for key in t.keys():

t[key].sort(key=lambda k: (k.get('起始位址', 0)))

addrlist += t[key]

return addrlist

=。=..................................

什麼是IoC 和 DI

ioc 即控制反轉,di即依賴注入 簡單來說,ioc是一種思想,而di是這種思想的具體實現方式 要了解控制反轉 inversion of control 有必要先了解軟體設計的乙個重要思想 依賴倒置原則 dependency inversion principle 假設我們設計一輛汽車 先設計輪子,...

python list刪除元素是要注意的坑點

我們直接先給出輸出與預期不同的 in 28 a 1,2,3,4,5,6 in 29 for i in a a.remove i in 30 a out 30 2,4,6 在上述for迴圈中,假設我們刪除了index 2的值,原本index 3及之後的值會向前補位,所以在迴圈中就跳過了原index 3...

Spring之到底什麼是IOC和DI?

什麼是ioc容器?ioc全名 inversion of control,翻譯過來就是控制反轉。什麼是控制反轉?這個是物件導向的一種設計原則,可以用來減低計算機 之間的耦合度 模組及模組之間資訊或引數依賴的程度 其中最常見的方式叫做依賴注入 依賴注入就是把本來應該在程式中有的依賴在外部注入到程式之中 ...