Подтвердить что ты не робот

Удаление свойства JSON в массиве объектов с помощью Python

У меня есть массив 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

Когда я print распознает список, он возвращает пустой массив. Что я должен исправить, чтобы нормально работать?

4b9b3361

Ответ 1

Легкое решение вашей проблемы - удаление ненужного ключа на месте с помощью del:

import json

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

Вы должны добавить некоторые проверки безопасности, но вы получите эту идею.

Ответ 2

Если не все элементы имеют ключ imageData, то использование del приведет к исключению KeyError. Вы можете предотвратить это, используя pop со значением по умолчанию:

for item in data: 
    item.pop('image', None)

Ответ 3

[ item for item in data if not item['imageData'] ]

пусто, так как все имеют imageData. Вы просто проверяете его, а не удаляете.

Завершите цикл date и del item['imageData'] на каждом item.

Ответ 4

Как насчет:
clean_data = [k:v for k,v in data.iteritems() if k != 'imageData']

Или словарь expresion/понимание, если вы хотите словарь:
clean_data = {k:v for k,v in data.iteritems() if k != 'imageData'}