我有一個list如下dict:
objList = [{
'Name': 'keyboard',
'objectId': [0, 1],
'StartTime': '2022-01-10T13:18:17.098119',
'IsCompleted': False,
'MetaData': [{
'Count': 2
}]
}, {
'Name': 'smallObjects',
'objectId': [2, 3],
'StartTime': '2022-01-10T13:18:33.950507',
'IsCompleted': False,
'MetaData': [{
'Count': 2
}]
}]
和元組串列:
objectsCounter = [('keyboard', 2), ('smallObjects', 4)]
我必須撰寫一個 python 代碼,如果MetaData大于或等于. 如果是,那么我必須設定為else 。為此,我寫了下面的代碼并且作業正常dictobjListobjectsCounterIsCompletedTrueFalse
for obj1 in objList:
for obj2 in objectsCounter:
if obj2[0] == obj1['Name']:
if obj2[1] >= obj1['MetaData'][0]['Count']:
obj1['IsCompleted'] = True
break
但是因為我使用了很多forand if,所以我覺得必須有更好的方法來進行這種比較。誰能幫我優化上面的代碼或者上面的代碼看起來不錯。謝謝
uj5u.com熱心網友回復:
我認為您的解決方案效果很好,這是另一種方法。把你的objectsCounter變成字典,然后只回圈一個串列
o=dict(objectsCounter )
for i in objList:
#Matching your code
i['IsCompleted']= o[i['Name']] >= i['MetaData'][0]['Count']
您只會遍歷您需要的專案,即objList. if當您將值設定為isCompleted邏輯比較時,您也不需要。
要匹配描述而不是代碼,只需更改運算子
i['IsCompleted']= o[i['Name']] <= i['MetaData'][0]['Count']
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/410049.html
標籤:
上一篇:如何比較Python中的字典串列
