Вывести значения из словаря словарей по ключу

tovar = {
    'tovar': {
        'Кофе': {
            '300 мл - 119 руб': '119',
            '400 мл - 149 руб': '149'
        },
        'Напиток': {
            '300 мл - 119 руб': '119',
            '400 мл - 139 руб': '139'
        },
        'Сироп': {
            '300 мл - 119 руб': '119',
            '400 мл - 139 руб': '139'
        }
    },
}

Подскажите как вывести значения по ключу Кофе ? Пробовал print(tovar['tovar'][0]) не работает


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

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

Ну, например, так:

print(list(tovar['tovar'])[0])
# Кофе

Объяснение: порядок хранения ключей словаря исторически как бы не гарантирован (хотя в последних версиях Python уже всё же гарантирован), поэтому их нельзя индексировать по номерам. Но если ключи словаря превратить в список, тогда можно взять из этого списка элемент по индексу.

И да - у вас тут не массивы, а словари трёх уровней вложенности.

→ Ссылка
Автор решения: Mor4em

Не совсем понятно, что именно вы хотите вывести в итоге, но у меня есть такое предложение для решения

for name in tovar['tovar']:                  
    print(name + ': ')                       
    for k, v in tovar['tovar'][name].items():
        print('{}: {}'.format(k, v))                   

Этот код выведет:

Кофе: 
300 мл - 119 руб: 119
400 мл - 149 руб: 149
Напиток: 
300 мл - 119 руб: 119
400 мл - 139 руб: 139
Сироп: 
300 мл - 119 руб: 119
400 мл - 139 руб: 139
→ Ссылка