Как я могу использовать del для удаления всего списка, включая его имя, из файла JSON и просмотра изменений, отраженных Python

Программы на Python
Ответить
Anonymous
 Как я могу использовать del для удаления всего списка, включая его имя, из файла JSON и просмотра изменений, отраженных

Сообщение Anonymous »

Я пытаюсь создать приложение, которое позволит пользователям удалять списки с элементами. Списки будут сохранены в файле JSON, поэтому не придется постоянно добавлять один и тот же список.
Удаление элемента работает, но удаление всего списка, похоже, не работает. . Когда я удаляю элемент из списка, он отображается в файле JSON, но в тот момент, когда я пытаюсь удалить весь список, включая его имя, ничего в JSON не меняется (хотя оператор print показывает, что это сработало).
Имейте в виду, что я хочу удалить сам список, а не только элементы.
Изменение не отображается в файле JSON, и я могу не понимаю, в чем проблема.
Ниже вы найдете мой код Python и текущий файл JSON.

Код: Выделить всё

import json

# Saves the edited data in the json file
def opslaan(data):
"""
Saves the data to the json file.

Arguments:
data (dict): the list that needs to be saved to the json file
"""
try:
with open("opslag.json", "r") as f:
bestaande_data = json.load(f)
except (FileNotFoundError, json.JSONDecodeError):
bestaande_data = {}

bestaande_data.update(data)

with open("opslag.json", "w") as f:
json.dump(bestaande_data, f, indent=4)

# Loads the json
def ophalen():
with open("opslag.json", "r") as f:
return json.load(f)

# Asks the user to delete data
def item_verwijderen(data):
volledig_of_item = input("Would you like to delete an item or a whole list?")
if volledig_of_item == "item":
verwijderen_lijst = input("From what list would you like to delete an item?")
item_lijst = input("What item would you like to delete?")
data[verwijderen_lijst].remove(item_lijst)
else:
lijst = input("What list would you like to delete?")
del data[lijst]
opslaan(data)

lijst = {}
data_opslaan = opslaan(lijst)
data_ophalen = ophalen()
item_verwijderen(data_ophalen)
print(data_ophalen)
Текущий файл JSON:

Код: Выделить всё

{
"Games": [
"League of Legends",
"Call of Duty",
"Football Manager",
"Cyberpunk"
],
"Films": [
"Deadpool",
"Wolverine",
"Pirates of the Caribbean"
]
}
Ввод Cmd:

Код: Выделить всё

Would you like to delete an item or a whole list?list

What list would you like to delete?Games

{'Films': ['Deadpool', 'Wolverine', 'Pirates of the Caribbean']}
Ожидаемый файл JSON:

Код: Выделить всё

{
"Films": [
"Deadpool",
"Wolverine",
"Pirates of the Caribbean"
]
}
Фактический полученный файл JSON:

Код: Выделить всё

{
"Games": [
"League of Legends",
"Call of Duty",
"Football Manager",
"Cyberpunk"
],
"Films": [
"Deadpool",
"Wolverine",
"Pirates of the Caribbean"
]
}
Я попробовал использовать метод .clear(), и хотя он удаляет элементы списков, он также не удаляет имя, чего я и хочу тоже уйти. Однако изменения отображаются в файле JSON, поэтому я не знаю, почему изменения не отображаются с помощью del.
Кроме того, я пытался искать ответы в Интернете, но Я не смог найти ничего, что помогло бы.

Подробнее здесь: https://stackoverflow.com/questions/791 ... -json-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»