Olá, para mim em certa parte do código começou a ficar um pouco confuso para mim, provavelmente com partes que já foi ensinado anteriormente ou que não foram muito aprofundadas.
for i in dados_json:
nome_do_restaurante = i['Company']
if nome_do_restaurante not in dados_restaurante:
dados_restaurante[nome_do_restaurante] = []
dados_restaurante[nome_do_restaurante].append({"item": i['Item'], "price": i['price'], "description": i['description'] })
Nessa parte acima entendi que ele está criando um for onde cada item dentro do dados_json passa por essa lista, primeiro criamos uma variável e atribuimos ela ao valor da chave Company no caso o nome dos restaurantes, depois ele cria uma verificação se o nome do restaurante não está na lista de dados dos restaurantes, depois disso começou a ficar um pouco confuso para mim, não entendi o porque ele criou a lista dei uma olhada em outros tópicos já criados antes de criar esse e falaram que era que o código cria uma nova entrada com o nome do restaurante como chave e uma lista vazia como valor mas mesmo assim não entendi nem um pouco..