如何在Python中比较字典列表与元组列表

问题描述 投票:0回答:1

我有

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
,我觉得必须有更好的方法来进行这种比较。我该如何优化上面的代码,或者可以吗?
    

python python-3.x list dictionary tuples
1个回答
1
投票
if

转换为字典,然后仅循环遍历一个列表

objectsCounter

您将只循环浏览您需要的项目,即
o=dict(objectsCounter ) for i in objList: #Matching your code i['IsCompleted']= o[i['Name']] >= i['MetaData'][0]['Count']

中的项目。 当您只需将

objList
的值设置为逻辑比较时,您也不需要
if
要匹配描述而不是代码,只需更改运算符

isCompleted

	
© www.soinside.com 2019 - 2024. All rights reserved.