@andreygeraskin

Как добавить вложенный список?

Код:
def add(brand, model, year):
        f = open("text.txt", "r")
        dict_autos[str(brand+model+year)]:dict_autos[str(brand+model+year)]["brand"] = brand, dict_autos[str(brand+model+year)]["model"] = model, sdict_autos[str(brand+model+year)]["year"] = year
        f.close()
 add("Ford", "Mustang", "1964")

Нужно, чтобы в списке dist_autos создавался вложенный список с названием "марка_модель_год"(без пробелов, к примеру fordmustang1964).
Сама ошибка:
5f888de9447fb243396341.png
Заранее извиняюсь за глупый вопрос, только начинаю изучать питон, пока непривычно.
  • Вопрос задан
  • 47 просмотров
Пригласить эксперта
Ответы на вопрос 1
Tomio
@Tomio
backend developer (python, php)
Где же вы взяли этот псевдокод с каким-то безумным синтаксисом. Ваша функция должна возвращать результат, который вы будете присваивать переменной. А у вас используется глобальная область видимости, так вообще категорически запрещено делать, потом нарастите себе уйму проблем.
И не понятно, зачем вы открываете файл (причём формально не совсем корректно), но не пользуетесь его содержимым =\
Начните с понятий. dict_autos у вас это не список, а словарь. Создать вложенный словарь проще простого, нужно лишь не забывать проверять, что каждый вложенный ключ словаря существует:

def add(brand, model, year, dict_autos):
    if brand not in dict_autos:
        dict_autos.update({brand: set()})
    dict_autos[brand].add((model, year))
    return dict_autos

dict_autos = {}
dict_autos = add('Ford', 'Mustang', 1964, dict_autos)
dict_autos = add('Ford', 'Focus', 2012, dict_autos)
print(dict_autos)


В примере выше я создаю словарь с ключом brand, в котором лежит сет из кортежей (model, year). Сет позволяет добиться уникальности и второй подобной записи (model, year) в нём не будет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы