Я написал приложение, которое помогает мне искать гигантский файл JSON (дамп базы данных). JSON-файл загружается как список словарей, используя:
with open ('myDB.json', 'r', encoding="utf-8") as file:
myDB = json.load(file)
Текущая структура myDB выглядит следующим образом:
[
{
"object":"myobject",
"key1":"value1",
"key2":"value2",
"key3":"value3",
}
{
"object":"myobject",
"key1":"value1",
"key2":"value2",
"key3":"value3",
}
]
Некоторые значения являются списками, некоторые значения являются другими словарями, а некоторые являются просто обычными значениями.
В данный момент я выводю запрашиваемые элементы, печатая их довольно просто:
for i in queryResults:
print(json.dumps(i, indent = 3))
... но, к сожалению, в каждом элементе так много клавиш, что он занимает слишком много места на экране и делает его нечитаемым. Еще хуже, мне не нужно все это. Я хотел бы выборочно удалить определенные пары ключ: значение из результата печати, поэтому в моем примере, скажем, будут напечатаны только объект и ключ2 .
Меня не интересует ручная печать (или создание списков) нужных мне пар ключ-значение. Их слишком много, чтобы сделать это таким образом, не говоря уже о том, что реальные потребности могут измениться. Для сравнения есть только пара ключей : значение пар, которые я хочу удалить. Я предпочел бы иметь список ключей для удаления, которые будут использоваться при печати результатов, таким образом, фильтруя то, что на самом деле напечатано.
Приветствуются Pythonic one-liners.
БОНУСНЫЙ ВОПРОС: В первую очередь я ищу способ удалить пары ключ: значение верхнего уровня в каждом предмете, но ради полного знания я буду счастлив также знать, как удалить пары key: value из под-словарей, которые являются значениями определенных ключей верхнего уровня.