我有一个$long
对象,其中包含各种不必要的值,例如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
}
]
}
我该怎么办?
答案 0 :(得分:2)
这适用于我,我将数据存储在变量中,并使用您的第一个列表推导进行评估。请注意,我使用了一组ignored_values,这稍快一点:
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}]
答案 1 :(得分:1)
我认为这就是你想要的;
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'}