Eliminando la propiedad JSON en la matriz de objetos

Tengo una matriz JSON que estoy limpiando en Python. Quiero eliminar la propiedad imageData :

data.json

 [{"title": "foo", "imageData": "xyz123"}, {"title": "bar", "imageData": "abc123"}, {"title": "baz", "imageData": "def456"}] 

Estoy configurando una lista de comprensión para eliminar la propiedad, pero no estoy seguro de cómo crear la variable que se centra en 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 

Cuando print la lista de comprensión, devuelve una matriz vacía. ¿Qué tengo que corregir para que esto funcione correctamente?

Una solución fácil para su problema es eliminar la clave no deseada en su lugar, con del :

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

Debes agregar algunos controles de seguridad, pero entiendes la idea.

Si no todos los elementos tienen una clave imageData , el uso de del causa una excepción KeyError . Podría protegerse contra eso usando pop con un valor predeterminado:

 for item in data: item.pop('image', None) 
 [ item for item in data if not item['imageData'] ] 

está vacío porque todos tienen imageData . Solo estás probándolo , no quitándolo .

Bucle sobre la date y del item['imageData'] en cada item .

Qué tal si:
clean_data = [k:v for k,v in data.iteritems() if k != 'imageData']

O una expresión / comprensión de diccionario si quieres un diccionario:
clean_data = {k:v for k,v in data.iteritems() if k != 'imageData'}