在Python中,如果值为空、“null”或“无”,则删除字典列表中的项

2024-09-30 00:37:54 发布

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

我有一个JSON对象,它包含各种不必要的值,比如"null"""None。如果包含这样的值,我想删除整个对象。在

>>> json.dumps(event, indent=4)
"event" = {
    "status": "COMPLETED",  
    "dataValues": [
    {
        "key": "wiiDcsQ5pdQ",
        "value": "25"
    },
    {
        "key": "RsZ4gQzWPWU",
        "value": "null"
    },
    {
        "key": "L7aO70bcrbP",
        "value": ""
    },
    {
        "key": "gY6pXRwdThm",
        "value": "null"
    },
    {
        "key": "x1708y0C4C7",
        "value": False
    }
    ]
}

我失败的尝试:

^{pr2}$

我该怎么做?在


Tags: 对象keynoneeventjsonvaluestatusnull
2条回答

这对我很有用,我将数据存储在一个变量中,并使用您的第一个列表理解来计算它。请注意,我使用的是一组被忽略的_值,速度稍快:

In [12]: import json

In [13]: json_text = """{
    "status": "COMPLETED",  
    "dataValues": [
    {
        "key": "wiiDcsQ5pdQ",
        "value": "25"
    },
    {
        "key": "RsZ4gQzWPWU",
        "value": "null"
    },
    {
        "key": "L7aO70bcrbP",
        "value": ""
    },
    {
        "key": "gY6pXRwdThm",
        "value": null
    },
    {
        "key": "x1708y0C4C7",
        "value": false
    }
    ]
}"""

In [14]: data = json.loads(json_text)

In [15]: ignored_values = set(["null", "", None])

In [16]: [elem for elem in data['dataValues'] if elem['value'] not in ignored_values]
Out[16]: 
[{u'key': u'wiiDcsQ5pdQ', u'value': u'25'},
 {u'key': u'x1708y0C4C7', u'value': False}]

我想这就是你想要的

ignored_values = ['null', '', None]
data_values = event['dataValues']

In [36]: event['dataValues'] = filter(lambda x: x['value'] not in  ignored_values, data_values) 
In [37]: event
Out[37]:
{'dataValues': [{'key': 'wiiDcsQ5pdQ', 'value': '25'},
  {'key': 'x1708y0C4C7', 'value': False}],
 'status': 'COMPLETED'}

相关问题 更多 >

    热门问题