• Как взять min float?

    LazyTalent
    @LazyTalent
    Data Engineer, Freelancer
    1й способ:
    min_prices = dict()
    
    for k, v in sweets.items():
        min_prices[k] = dict()
    
        for counter, i in enumerate(v):
            if counter == 0:
                min_prices[k]['price'] = i['price']
                min_prices[k]['shop'] = i['shop']
                continue
            if i['price'] < min_prices[k]['price']:
                min_prices[k]['price'] = i['price']
                min_prices[k]['shop'] = i['shop']
    
    pprint(min_prices)
    {'карамель': {'price': 41.99, 'shop': 'магнит'},
     'конфеты': {'price': 30.99, 'shop': 'магнит'},
     'печенье': {'price': 9.99, 'shop': 'пятерочка'},
     'пирожное': {'price': 59.99, 'shop': 'пятерочка'}}


    2й способ:
    min_prices = {k: min(v, key=lambda x: x['price']) for k, v in sweets.items()}
    
    pprint(min_prices)
    
    {'карамель': {'price': 41.99, 'shop': 'магнит'},
     'конфеты': {'price': 30.99, 'shop': 'магнит'},
     'печенье': {'price': 9.99, 'shop': 'пятерочка'},
     'пирожное': {'price': 59.99, 'shop': 'пятерочка'}}
    Ответ написан
    Комментировать
  • Как взять min float?

    @galaxy
    for i, item in sweets.items():
        print(i, min([o['price'] for o in item]))
    Ответ написан
    3 комментария
  • Почему он считывает print (a), если он не относится к циклу while?

    @dadasay
    Вот вывелось вам "12, 48000.0" . А значит выполнилась строка "print(i, a)". После нее какая строка ? Правильно "a = a + dohod". После выполнения данной строки кода переменная "а" становится равной 52000.0.

    Ниже подправленный код.

    dohod = 5000
    procent = - 0.20
    dohod += dohod * procent
    i = 0
    a = dohod
    while True:
        i += 1
        print(i, a)
        if i == 12:
            break
        a = a + dohod
    print(a)
    Ответ написан
    Комментировать