В приведенном ниже коде есть словарь, содержащий различные сыры, а также их количество. На основе заранее определенного списка товаров для продажи код затем печатает общее количество сыров, которые продаются, по сравнению с полной ценой.
Я использую выражения генератора для вычисления итогов, но мне интересно, есть ли способ сжать мой код, чтобы назначить одновременно переменные sale_count
и full_price_count
с каким-то условием if-else, так как код для генераторов практически одинаков.
cheeses = {'gouda': 3, 'cheddar': 7, 'american': 2, 'mozzarella': 5}
on_sale = ['american', 'blue cheese', 'cheddar', 'provolone', 'swiss']
# if the cheese is on sale, add its quantity to sale_count
# otherwise, add its quantity to full_price_count
sale_count = sum(qty for (cheese, qty) in cheeses.items() if cheese in on_sale)
full_price_count = sum(qty for (cheese, qty) in cheeses.items() if cheese not in on_sale)
print("Sale count: {}\nFull price count: {}".format(sale_count, full_price_count))