我的代码中有一些逻辑,如果条件满足,我就删除一个键/值或字典。这些对象在列表中时被删除,但是一旦它们被附加到顶级字典并变成JSON对象,它们就会重新出现,从而否定了我的逻辑。这可能是什么原因
下面是我的代码示例,它显示了字典是如何附加逻辑的,删除键/值和字典
dL311 = dict()
d = dict()
d.setdefault("DriverFirstName",last_edited_user )
d.setdefault("DriverLastName","Aguilar" )
d.setdefault("LastUpdatedBy", "SANSTAR1")
d.setdefault("DACType", dar_item_1)
d.setdefault("Type", "Dead Animal Removal")
d.setdefault("Name", dar_uid_1 )
d.setdefault("DACItemCount", dar_qyt_1)
l311.append(d)
dL311 = dict()
d = dict()
d.setdefault("DriverFirstName",last_edited_user )
d.setdefault("DriverLastName","Aguilar" )
d.setdefault("LastUpdatedBy", "SANSTAR1")
d.setdefault("DACType", dar_item_2)
d.setdefault("Type", "Dead Animal Removal")
d.setdefault("Name", dar_uid_2)
d.setdefault("DACItemCount", dar_qyt_2)
l311.append(d)
d = dict()
d.setdefault("DriverFirstName",last_edited_user )
d.setdefault("DriverLastName","Aguilar" )
d.setdefault("LastUpdatedBy", "SANSTAR1")
d.setdefault("DACType", dar_item_3)
d.setdefault("Type", "Dead Animal Removal")
d.setdefault("Name", dar_uid_3)
d.setdefault("DACItemCount", dar_qyt_3)
l311.append(d)
d = dict()
d.setdefault("DriverFirstName",last_edited_user )
d.setdefault("DriverLastName","Aguilar" )
d.setdefault("LastUpdatedBy", "SANSTAR1")
d.setdefault("DACType", dar_item_4)
d.setdefault("Type", "Dead Animal Removal")
d.setdefault("Name", dar_uid_4)
d.setdefault("DACItemCount", dar_qyt_4)
l311.append(d)
d = dict()
d.setdefault("DriverFirstName",last_edited_user )
d.setdefault("DriverLastName","Aguilar" )
d.setdefault("LastUpdatedBy", "SANSTAR1")
d.setdefault("DACType", dar_item_5)
d.setdefault("Type", "Dead Animal Removal")
d.setdefault("Name", dar_uid_5)
d.setdefault("DACItemCount", dar_qyt_5)
l311.append(d)
d = dict()
d.setdefault("DriverFirstName",last_edited_user )
d.setdefault("DriverLastName","Aguilar" )
d.setdefault("LastUpdatedBy", "SANSTAR1")
d.setdefault("DACType", dar_item_6)
d.setdefault("Type", "Dead Animal Removal")
d.setdefault("Name", dar_uid_6)
d.setdefault("DACItemCount", dar_qyt_6)
l311.append(d)
d = dict()
d.setdefault("DriverFirstName",last_edited_user )
d.setdefault("DriverLastName","Aguilar" )
d.setdefault("LastUpdatedBy", "SANSTAR1")
d.setdefault("DACType", dar_item_7)
d.setdefault("Type", "Dead Animal Removal")
d.setdefault("Name", dar_uid_7)
d.setdefault("DACItemCount", dar_qyt_7)
l311.append(d)
d = dict()
d.setdefault("DriverFirstName",last_edited_user )
d.setdefault("DriverLastName","Aguilar" )
d.setdefault("LastUpdatedBy", "SANSTAR1")
d.setdefault("DACType", dar_item_8)
d.setdefault("Type", "Dead Animal Removal")
d.setdefault("Name", dar_uid_8)
d.setdefault("DACItemCount", dar_qyt_8)
l311.append(d)
d = dict()
d.setdefault("DriverFirstName",last_edited_user )
d.setdefault("DriverLastName","Aguilar" )
d.setdefault("LastUpdatedBy", "SANSTAR1")
d.setdefault("DACType", dar_item_9)
d.setdefault("Type", "Dead Animal Removal")
d.setdefault("Name", dar_uid_9)
d.setdefault("DACItemCount", dar_qyt_9)
l311.append(d)
d = dict()
d.setdefault("DriverFirstName",last_edited_user )
d.setdefault("DriverLastName","Aguilar" )
d.setdefault("LastUpdatedBy", "SANSTAR1")
d.setdefault("DACType", dar_item_10)
d.setdefault("Type", "Dead Animal Removal")
d.setdefault("Name", dar_uid_10)
d.setdefault("DACItemCount", dar_qyt_10)
l311.append(d)
for d in l311:
if(d['Name'].strip() == '') and((type(d['DACItemCount']) != int) or (d['DACItemCount']==0)):
del d['Name']
del d['DACItemCount']
lIndexes = []
nCnt = len(l311)
for i in range(nCnt):
dd = l311[i]
if(dd==d):
lIndexes.append(i)
for i in lIndexes:
i
#remove the d from the original l311 in a reverse order:
# print ("order (of index) in which items are deleted:" )
for ii in reversed(lIndexes):
if d.setdefault("Name", dar_uid_10) == ' ':
# print(ii)
del l311[ii]
print (l311)
dL311 = dict()
dL311.setdefault("DeadAnimalRemoval", l311)
dResult.setdefault("ListOfLa311DeadAnimalRemoval",dL311)
#Ends of adding additional itmes ****************************************
lResults.append({"MetaData": {}, "SRData": dResult})
使用上述代码的示例输出
[{'Name': '071920150633557841', 'DACType': ' ', 'DriverLastName': 'Aguilar', 'DriverFirstName': 'SA', 'LastUpdatedBy': 'SANSTAR1', 'DACItemCount': '0', 'Type': 'Dead Animal Removal'}]
不删除字典的JSON输出
{
"MetaData": {},
"SRData": {
"ListOfLa311DeadAnimalRemoval": {
"DeadAnimalRemoval": [
{
"DACItemCount": "0",
"DACType": " ",
"DriverFirstName": "SA",
"DriverLastName": "Aguilar",
"LastUpdatedBy": "SANSTAR1",
"Name": "071920150633557841",
"Type": "Dead Animal Removal"
},
{
"DACType": " ",
"DriverFirstName": "SA",
"DriverLastName": "Aguilar",
"LastUpdatedBy": "SANSTAR1",
"Name": " ",
"Type": "Dead Animal Removal"
}
]
},
"ReasonCode": "",
"ResolutionCode": "A",
"SRNumber": "1-21630001"
}
}
]
我希望删除第二个字典,因为没有'Name'值
如果删除一个名称,那么
if d.setdefault("Name", dar_uid_10) == ' '
会将名称添加回dar\u uid\u 10。除非dar\u uid\u 10=='',否则此代码永远不会认为字典的名称是空格我想用
if 'Name' not in d
来代替相关问题 更多 >
编程相关推荐