我有
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
中的dict
(对于键盘和小对象)是否大于或等于objList
中的计数。如果是,那么我必须将 objectsCounter
设置为 IsCompleted
,否则 True
。为此,我编写了下面的代码并且运行良好:False
但是因为我使用了很多
for obj1 in objList:
for obj2 in objectsCounter:
if obj2[0] == obj1['Name']:
if obj2[1] >= obj1['MetaData'][0]['Count']:
obj1['IsCompleted'] = True
break
和
for
,我觉得必须有更好的方法来进行这种比较。我该如何优化上面的代码,或者可以吗?if
转换为字典,然后仅循环遍历一个列表
objectsCounter
您将只循环浏览您需要的项目,即
o=dict(objectsCounter )
for i in objList:
#Matching your code
i['IsCompleted']= o[i['Name']] >= i['MetaData'][0]['Count']
中的项目。 当您只需将
objList
的值设置为逻辑比较时,您也不需要 if
。要匹配描述而不是代码,只需更改运算符
isCompleted