我有個問題。我myList在這些串列中有一個串列,還有一個字典。我想計算該欄位dataOriginSystem是否為空或不存在。不幸的是,我得到了錯誤的結果。if(key_nested == 'dataOriginSystem'): ... else: count = 1
原因在于 if 查詢。既然我在問,該領域是否存在?如果否,則將其數一數,因為我回圈遍歷所有嵌套鍵,因此其中一個錯誤就在這里。另外,有沒有辦法提高效率?
如何查詢有多少欄位dataOriginSystem為空或不存在?
count = 0
for element in myList:
for key in element.keys():
if(key == 'metaData'):
for key_nested in element[key].keys():
if(key_nested == 'dataOriginSystem'):
if(key_nested == None):
count = 1
else:
count = 1
print(count)
myList = [
{'_id': 'orders/213123',
'contactEditor': {'name': 'Max Power',
'phone': '1234567',
'email': '[email protected]'},
'contactSoldToParty': {'name': 'Max Not',
'phone': '123456789',
'email': '[email protected]'},
'isCompleteDelivery': False,
'metaData': {'dataOriginSystem': 'Goods',
'dataOriginWasCreatedTime': '10:12:12',},
'orderDate': '2021-02-22',
'orderDateBuyer': '2021-02-22',
},
{'_id': 'orders/12323',
'contactEditor': {'name': 'Max Power2',
'phone': '1234567',
'email': '[email protected]'},
'contactSoldToParty': {'name': 'Max Not',
'phone': '123456789',
'email': '[email protected]'},
'isCompleteDelivery': False,
'metaData': {'dataOriginSystem': 'Goods',
'dataOriginWasCreatedTime': '10:12:12',},
'orderDate': '2021-02-22',
'orderDateBuyer': '2021-02-22',
},
{'_id': 'orders/12323',
'contactEditor': {'name': 'Max Power2',
'phone': '1234567',
'email': '[email protected]'},
'contactSoldToParty': {'name': 'Max Not',
'phone': '123456789',
'email': '[email protected]'},
'isCompleteDelivery': False,
'metaData': {
'dataOriginWasCreatedTime': '10:12:12',},
'orderDate': '2021-02-22',
'orderDateBuyer': '2021-02-22',
},
{'_id': 'orders/12323',
'contactEditor': {'name': 'Max Power2',
'phone': '1234567',
'email': '[email protected]'},
'contactSoldToParty': {'name': 'Max Not',
'phone': '123456789',
'email': '[email protected]'},
'isCompleteDelivery': False,
'metaData': {'dataOriginSystem': None,
'dataOriginWasCreatedTime': '10:12:12',},
'orderDate': '2021-02-22',
'orderDateBuyer': '2021-02-22',
},
]
結果應該是
[OUT] 2
# Because of the two last elements.
# The first element does not exist
# and the second ist None.
uj5u.com熱心網友回復:
您可以dict.get直接在嵌套鍵上使用,回傳默認值None,然后計算None您獲得的值的數量:
sum(d['metaData'].get('dataOriginSystem', None) is None for d in myList)
輸出
2
uj5u.com熱心網友回復:
您不必遍歷鍵。直接訪問您想要的專案,如果未找到該專案,或者找到但沒有,則增加計數器。
count = 0
for element in myList:
if element["metaData"].get("dataOriginSystem", None) is None:
count = 1
print(count)
uj5u.com熱心網友回復:
你可以試試這樣的...
non_existant = len([0 for item in myList if item['metaData'].get('dataOriginSystem') == None or item['metaData'].get('dataOriginSystem') == ''])
print(non_existant)
輸出...
2
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/477314.html
