Где же вы взяли этот псевдокод с каким-то безумным синтаксисом. Ваша функция должна возвращать результат, который вы будете присваивать переменной. А у вас используется глобальная область видимости, так вообще категорически запрещено делать, потом нарастите себе уйму проблем.
И не понятно, зачем вы открываете файл (причём формально не совсем корректно), но не пользуетесь его содержимым =\
Начните с понятий.
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) в нём не будет.