Если у вас есть данные в таком виде:
Part = collections.namedtuple('Part', 'key name price')
parts = {
'WH239': Part('WH239', 'Mountain Bike Wheel', 5000),
'TR202': Part('TR202', 'Mountain Bike Tire', 2000),
'TU277': Part('TU277', 'Mountain Bike Tube', 2000),
'FR201': Part('FR201', 'Mountain Bike Frame', 60000),
}
Product = collections.namedtuple('Product', 'key name parts')
product = Product(
'bike201',
'Mountain Bike',
[('WH239', 2), ('TR202', 2), ('TU277', 2), ('FR201', 1)]
)
, вы можете сделать что-то вроде этого:
product_price = sum(n*parts[part_name].price for part_name, n in product.parts)