Распаковка значений объекта

На каждой итерации приходит список из 2-х переменных, требуется сразу распаковывать в 2 переменные: for product, cost in shop. Как это сделать?

shop = [['каретка', 1200], ['шатун', 1000], ['седло', 300],
        ['педаль', 100], ['седло', 1500], ['рама', 12000],
        ['обод', 2000], ['шатун', 200], ['седло', 2700]]

det_count = 0
det_cost = 0
detail = input('Название детали: ')

for i in range(len(shop)):
    if shop[i][0] == detail.lower():
        det_count += 1
        det_cost += shop[i][1]
print()
if det_count > 0:
    print('Кол-во деталей -', det_count)
    print('Общая стоимость -', det_cost)
else:
    print('Товар не найден.')

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

Автор решения: Павел

Переделайте объект shop в словарь вида shop = {'каретка' : 1200, ...}, после чего для распаковки элементов словаря можно использовать следующую конструкцию:

for product, cost in shop.items()

Но конкретно для вашей задачи для того, чтобы получить стоимость детали по названию достаточно будет сделать следующее:

detail = input().lower()
if detail in shop:
    cost += shop[detail]

Если вы не знакомы с такой структурой данных как словарь, то советую почитать официальную документацию

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

требуется сразу распаковывать в 2 переменные: for product, cost in shop

Ну, именно так и напишите, только двоеточие нужно добавить в конце:

for product, cost in shop:
    if product == detail.lower():
        det_count += 1
        det_cost += cost
→ Ссылка