I have below list:
objList = [{
'Name': 'keyboard',
'objectId': [0, 1],
'StartTime': '2022-01-10T13:18:17.098119',
'IsCompleted': False,
'MetaData': [{
'Count': 2
}]
}]
o = [{"keyboard": "Assembly"}, {"smallObjects": "Label"}]
I have to check if objList has all the dict with Name matching the key of dict in o. If not then print the Name. I have below working code:
if len(objList) != len(o):
for i in o:
for (k, v) in i.items():
for obj in objList:
if k == obj["Name"]:
print("Found {}".format(k))
else:
print("Not found {}".format(k))
It seems to be working but not properly optimized as it has lot of for loop. Is there any other way we can optimize the code. Thanks
CodePudding user response:
another way to resolve your problem is to trap all keys and all values for key Name in 2 sets/lists, like this:
objList = [{
'Name': 'keyboard',
'objectId': [0, 1],
'StartTime': '2022-01-10T13:18:17.098119',
'IsCompleted': False,
'MetaData': [{
'Count': 2
}]
}]
o = [{"keyboard": "Assembly"}, {"smallObjects": "Label"}]
all_keys = set().union(*(d.keys() for d in o))
names=[d['Name'] for d in objList]
for k in all_keys:
if k in names:
print("Found {}".format(k))
else:
print("Not found {}".format(k))
