我有以下串列:
objList = [{
'Name': 'keyboard',
'objectId': [0, 1],
'StartTime': '2022-01-10T13:18:17.098119',
'IsCompleted': False,
'MetaData': [{
'Count': 2
}]
}]
o = [{"keyboard": "Assembly"}, {"smallObjects": "Label"}]
我必須檢查是否objList所有的 dict 都與Namedict in 的鍵匹配o。如果沒有,則列印Name. 我有以下作業代碼:
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))
它似乎在作業,但沒有得到適當的優化,因為它有很多for回圈。有沒有其他方法可以優化代碼。謝謝
uj5u.com熱心網友回復:
解決問題的另一種方法是在 2 個集合/串列中捕獲所有keys鍵的所有值,如下所示:Name
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))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/410048.html
標籤:
上一篇:如何將鏈表添加到特里葉?
