在Python中如何从JSON中删除空键/值对

2024-05-29 02:35:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在构造一个带有键/值对的JSON,如果Name字段为空,Item_2字段为<;0,那么我想删除Name字段。在

我正在使用多达10个嵌套字典,但只有2-10个或1-9个[索引]字典才能满足此条件。在

^ {CD4>}是我的结果列表,它被转入JSON格式,当我打印^ {CD5>}时,只有值打印,而且我看不到空字符串,但是当LREST被丢弃到JSON中时,我看到空白字符串。在

10个字典中的每个字典中的变量可能是空的,也可能不是空的,但是我发送这个JSON的服务器要么需要一个Name字段,要么什么都不需要,而且Name字段对于每个字典都是唯一的。在

这是我的密码

    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)
 dL311 = dict()
        dL311.setdefault("DeadAnimalRemoval", l311)
        dResult.setdefault("ListOfLa311DeadAnimalRemoval",dL311)
        lResults.append({"MetaData": {}, "SRData": dResult})

作为JSON转储的lResults的结果,我想删除我想要构造一个条件的所有键,该条件声明:

^{pr2}$

名称字段为空的lResults的JSON

{
            "MetaData": {}, 
            "SRData": {
                "ListOfLa311DeadAnimalRemoval": {
                    "DeadAnimalRemoval": [
                        {
                            "DACItemCount": "0", 
                            "DACType": " ", 
                            "DriverFirstName": "Esri_Anonymous", 
                            "DriverLastName": "Aguilar", 
                            "LastUpdatedBy": "SANSTAR1", 
                            "Name": "070920151120552101", 
                            "Type": "Dead Animal Removal"
                        }, 
                        {
                            "DACItemCount": "0", 
                            "DACType": " ", 
                            "DriverFirstName": "Esri_Anonymous", 
                            "DriverLastName": "Aguilar", 
                            "LastUpdatedBy": "SANSTAR1", 
                            "Name": " ", 
                            "Type": "Dead Animal Removal"
                        }, 
                        {
                            "DACItemCount": "0", 
                            "DACType": " ", 
                            "DriverFirstName": "Esri_Anonymous", 
                            "DriverLastName": "Aguilar", 
                            "LastUpdatedBy": "SANSTAR1", 
                            "Name": " ", 
                            "Type": "Dead Animal Removal"
                        }, 
                        {
                            "DACItemCount": "0", 
                            "DACType": " ", 
                            "DriverFirstName": "Esri_Anonymous", 
                            "DriverLastName": "Aguilar", 
                            "LastUpdatedBy": "SANSTAR1", 
                            "Name": " ", 
                            "Type": "Dead Animal Removal"
                        }, 
                        {
                            "DACItemCount": "0", 
                            "DACType": " ", 
                            "DriverFirstName": "Esri_Anonymous", 
                            "DriverLastName": "Aguilar", 
                            "LastUpdatedBy": "SANSTAR1", 
                            "Name": " ", 
                            "Type": "Dead Animal Removal"
                        }, 
                        {
                            "DACItemCount": "0", 
                            "DACType": " ", 
                            "DriverFirstName": "Esri_Anonymous", 
                            "DriverLastName": "Aguilar", 
                            "LastUpdatedBy": "SANSTAR1", 
                            "Name": " ", 
                            "Type": "Dead Animal Removal"
                        }, 
                        {
                            "DACItemCount": "0", 
                            "DACType": " ", 
                            "DriverFirstName": "Esri_Anonymous", 
                            "DriverLastName": "Aguilar", 
                            "LastUpdatedBy": "SANSTAR1", 
                            "Name": " ", 
                            "Type": "Dead Animal Removal"
                        }, 
                        {
                            "DACItemCount": "0", 
                            "DACType": " ", 
                            "DriverFirstName": "Esri_Anonymous", 
                            "DriverLastName": "Aguilar", 
                            "LastUpdatedBy": "SANSTAR1", 
                            "Name": " ", 
                            "Type": "Dead Animal Removal"
                        }, 
                        {
                            "DACItemCount": "0", 
                            "DACType": " ", 
                            "DriverFirstName": "Esri_Anonymous", 
                            "DriverLastName": "Aguilar", 
                            "LastUpdatedBy": "SANSTAR1", 
                            "Name": " ", 
                            "Type": "Dead Animal Removal"
                        }, 
                        {
                            "DACItemCount": "0", 
                            "DACType": " ", 
                            "DriverFirstName": "Esri_Anonymous", 
                            "DriverLastName": "Aguilar", 
                            "LastUpdatedBy": "SANSTAR1", 
                            "Name": " ", 
                            "Type": "Dead Animal Removal"
                        }
                    ]
                }, 
                "ReasonCode": "", 
                "ResolutionCode": "A", 
                "SRNumber": "1-20979921"
            }
        }
    ]
    [
        {
            "MetaData": {}, 
            "SRData": {
                "ListOfLa311DeadAnimalRemoval": {
                    "DeadAnimalRemoval": [
                        {
                            "DACItemCount": "0", 
                            "DACType": " ", 
                            "DriverFirstName": "Esri_Anonymous", 
                            "DriverLastName": "Aguilar", 
                            "LastUpdatedBy": "SANSTAR1", 
                            "Name": "070920151119458601", 
                            "Type": "Dead Animal Removal"
                        }, 
                        {
                            "DACItemCount": "0", 
                            "DACType": " ", 
                            "DriverFirstName": "Esri_Anonymous", 
                            "DriverLastName": "Aguilar", 
                            "LastUpdatedBy": "SANSTAR1", 
                            "Name": " ", 
                            "Type": "Dead Animal Removal"
                        }, 
                        {
                            "DACItemCount": "0", 
                            "DACType": " ", 
                            "DriverFirstName": "Esri_Anonymous", 
                            "DriverLastName": "Aguilar", 
                            "LastUpdatedBy": "SANSTAR1", 
                            "Name": " ", 
                            "Type": "Dead Animal Removal"
                        }, 
                        {
                            "DACItemCount": "0", 
                            "DACType": " ", 
                            "DriverFirstName": "Esri_Anonymous", 
                            "DriverLastName": "Aguilar", 
                            "LastUpdatedBy": "SANSTAR1", 
                            "Name": " ", 
                            "Type": "Dead Animal Removal"
                        }, 
                        {
                            "DACItemCount": "0", 
                            "DACType": " ", 
                            "DriverFirstName": "Esri_Anonymous", 
                            "DriverLastName": "Aguilar", 
                            "LastUpdatedBy": "SANSTAR1", 
                            "Name": " ", 
                            "Type": "Dead Animal Removal"
                        }, 
                        {
                            "DACItemCount": "0", 
                            "DACType": " ", 
                            "DriverFirstName": "Esri_Anonymous", 
                            "DriverLastName": "Aguilar", 
                            "LastUpdatedBy": "SANSTAR1", 
                            "Name": " ", 
                            "Type": "Dead Animal Removal"
                        }, 
                        {
                            "DACItemCount": "0", 
                            "DACType": " ", 
                            "DriverFirstName": "Esri_Anonymous", 
                            "DriverLastName": "Aguilar", 
                            "LastUpdatedBy": "SANSTAR1", 
                            "Name": " ", 
                            "Type": "Dead Animal Removal"
                        }, 
                        {
                            "DACItemCount": "0", 
                            "DACType": " ", 
                            "DriverFirstName": "Esri_Anonymous", 
                            "DriverLastName": "Aguilar", 
                            "LastUpdatedBy": "SANSTAR1", 
                            "Name": " ", 
                            "Type": "Dead Animal Removal"
                        }, 
                        {
                            "DACItemCount": "0", 
                            "DACType": " ", 
                            "DriverFirstName": "Esri_Anonymous", 
                            "DriverLastName": "Aguilar", 
                            "LastUpdatedBy": "SANSTAR1", 
                            "Name": " ", 
                            "Type": "Dead Animal Removal"
                        }, 
                        {
                            "DACItemCount": "0", 
                            "DACType": " ", 
                            "DriverFirstName": "Esri_Anonymous", 
                            "DriverLastName": "Aguilar", 
                            "LastUpdatedBy": "SANSTAR1", 
                            "Name": " ", 
                            "Type": "Dead Animal Removal"
                        }

Tags: nametypeesriremovalanonymousdeadanimalsetdefault
1条回答
网友
1楼 · 发布于 2024-05-29 02:35:49

有一种方法可以解决您的问题:在完成l311列表的构造之后,检查每个项(字典)并根据您的条件删除键:

l311 = [
    dict(
        DriverFirstName=last_edited_user,
        DriverLastName='Aguilar',
        LastUpdatedBy='SANSTAR1',
        DACType=dar_item_1,
        Type='Dead Animal Removal',
        Name=dar_uid_1,
        DACItemCount=dar_qyt_1),
    dict(
        DriverFirstName=last_edited_user,
        DriverLastName='Aguilar',
        LastUpdatedBy='SANSTAR1',
        DACType=dar_item_2,
        Type='Dead Animal Removal',
        Name=dar_uid_2,
        DACItemCount=dar_qyt_2),
    dict(
        DriverFirstName=last_edited_user,
        DriverLastName='Aguilar',
        LastUpdatedBy='SANSTAR1',
        DACType=dar_item_3,
        Type='Dead Animal Removal',
        Name=dar_uid_3,
        DACItemCount=dar_qyt_3),
    # ...
]

for d in l311:
    if not d['Name'].strip() and d['DACItemCount'] < 0:
        del d['Name']
        del d['DACItemCount']

相关问题 更多 >

    热门问题