Не обновляется словарь Python, хотя в PyCharm симуляторе срабатывает

У меня следующая проблема: добавляю в словарь новый ключ и значение, всё работает отлично в симуляторе PyCharm. НО: когда запускаю программу, которая должна добавлять ключи со значениями в импортированный словарь, пишет, что значение с ключом добавлены, а на самом деле, когда открываю словарь, там нет никаких изменений. Подскажите, пожалуйста, где ошибка ? Заранее благодарю

Словарь:

fruits = {
    "banana": 'банан',
    "plum": 'слива',
    "apple": 'яблоко'
}

Сама программа:

from fruits import fruits
while True:
    new_word = input("Please, input new word or phrase: ")
    new_definition = input("Please, input new definition: ")
    fruits[new_word] = new_definition
    print(f'\nYou added follow:\n{new_word}: {new_definition}')
    print(fruits)
    wish = input("Would you like to continue ? ")
    if wish == "no":
        break

Ответы (1 шт):

Автор решения: sLoNcE

Когда вы импортируете словарь fruits из модуля fruits.py, вы работаете с копией этого словаря в памяти. Изменения, которые вы делаете в этой копии, не отображаются в исходном файле fruits.py.Для более масштабных приложений лучше использовать базу данных вместо файла. Если вы не хотите сохранять изменения постоянно, можно использовать глобальную переменную в модуле fruits.py:

# fruits.py
global fruits
fruits = {
    "banana": 'банан',
    "plum": 'слива',
    "apple": 'яблоко'
}

Основной код немного оптимизировал:

from fruits import fruits
import json
from pathlib import Path

def save_fruits(data: dict, file_path: Path = Path('fruits.py')):
    file_path.write_text(f"fruits = {json.dumps(data, ensure_ascii=False, indent=4)}\n", encoding='utf-8')


def main():
    while True:
        new_word = input("Пожалуйста, введите новое слово или фразу: ").strip()
        if not new_word:
            print("Слово не может быть пустым. Попробуй еще раз.")
            continue

        new_definition = input("Пожалуйста, введите новое определение: ").strip()
        if not new_definition:
            print("Определение не может быть пустым. Попробуйте еще раз.")
            continue

        fruits[new_word] = new_definition
        print(f'\nВы добавили следующее:\n{new_word}: {new_definition}')
        save_fruits(fruits)

        if input("Желаете продолжить? (да/нет) ").lower().strip() != "да":
            break


if __name__ == "__main__":
    main()
→ Ссылка