Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除对象数组中的JSON属性_Python_Json - Fatal编程技术网

Python 删除对象数组中的JSON属性

Python 删除对象数组中的JSON属性,python,json,Python,Json,我有一个JSON数组,我正在用Python清理它。我想删除imageData属性: data.json [{"title": "foo", "imageData": "xyz123"}, {"title": "bar", "imageData": "abc123"}, {"title": "baz", "imageData": "def456"}] 我正在设置一个列表来删除该属性,但我不确定如何创建专注于imageData的变量: import json with open('data.js

我有一个JSON数组,我正在用Python清理它。我想删除
imageData
属性:

data.json

[{"title": "foo", "imageData": "xyz123"},
{"title": "bar", "imageData": "abc123"},
{"title": "baz", "imageData": "def456"}]
我正在设置一个列表来删除该属性,但我不确定如何创建专注于
imageData
的变量:

import json

with open('data.json') as json_data:
    data = json.load(json_data)
    clean_data = [ item for item in data if not item['imageData'] ]
    # Write `clean_data` to new json file
当我打印列表时,它返回一个空数组。我必须纠正什么才能使其正常工作

[ item for item in data if not item['imageData'] ]
是空的,因为它们都有
imageData
。您只是测试它,而不是删除它


循环查看每个
项目上的
日期
删除项目['imageData']

问题的简单解决方法是删除不需要的密钥,使用
删除

import json

with open('data.json') as json_data:
    data = json.load(json_data)
    for element in data: 
        del element['imageData'] 

你应该添加一些安全检查,但你明白了。

如果不是所有元素都有
imageData
键,那么使用
del
将导致
键错误
异常。您可以通过使用默认设置的
pop
来防止这种情况:

for item in data: 
    item.pop('image', None)
怎么样:
clean_data=[k:v代表k,数据中的v.iteritems()如果k!=“imageData”]

如果您想要一本词典,请使用词典解释/理解:
clean_data={k:v表示k,v表示数据中的v.iteritems()如果k!=“imageData”}