ДЗ с циклами в словарях

RSL161

Новичок
Пользователь
Сен 26, 2020
5
0
1
Дана переменная, в которой хранится информация о затратах и доходе рекламных кампаний по различным источникам. Необходимо дополнить исходную структуру показателем ROI, который рассчитаем по формуле: (revenue / cost - 1) * 100 .
Не могу сообразить как ROI добавить в каждую строку. Дайте совет.
results = { 'vk': {'revenue': 103, 'cost': 98}, 'yandex': {'revenue': 179, 'cost': 153}, 'facebook': {'revenue': 103, 'cost': 110}, 'adwords': {'revenue': 35, 'cost': 34}, 'twitter': {'revenue': 11, 'cost': 24}, }
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Тупик... можно подсказку для начинающих. Перебрал ,но безрезультатно...явно не туда копаю.
Вот подсказка:
Python:
for k, v in results.items():
    print('revenue', v['revenue'])
    print('cost', v['cost'])
    v['ROI'] = '???'
 
  • Мне нравится
Реакции: RSL161

lynulx

Модератор
Команда форума
Модератор
Авг 9, 2020
139
19
18
идешь по массиву циклом for
(важное уточнение, идя по словарю циклом for, i принимает ключ словаря, а не значение ключа)

добавляешь в массив новый элемент, высчитанный по данной формуле
(dictionary[key_name] = value)


готовое решение у меня есть, но кидать я его не буду, ведь суть дз - подкрепить знания.
 
Последнее редактирование:

RSL161

Новичок
Пользователь
Сен 26, 2020
5
0
1
Спасибо. Пробую!
 

RSL161

Новичок
Пользователь
Сен 26, 2020
5
0
1
1601147797877.png
Тупик... можно подсказку для начинающих. Перебрал ,но безрезультатно...явно не туда копаю.
 

lynulx

Модератор
Команда форума
Модератор
Авг 9, 2020
139
19
18
Посмотреть вложение 612
Тупик... можно подсказку для начинающих. Перебрал ,но безрезультатно...явно не туда копаю.
a = results с индексом i.
a с индексом "ROI" = ?
 
  • Мне нравится
Реакции: RSL161

RSL161

Новичок
Пользователь
Сен 26, 2020
5
0
1
results = {
'vk': {'revenue': 103, 'cost': 98},
'yandex': {'revenue': 179, 'cost': 153},
'facebook': {'revenue': 103, 'cost': 110},
'adwords': {'revenue': 35, 'cost': 34},
'twitter': {'revenue': 11, 'cost': 24},
}

for key, value in results.items():
#print('revenue', value['revenue'])
#print('cost', value['cost'])
value['ROI'] = round(((value['revenue'] / value['cost']) - 1)*100 , 2)
#print('ROI', value['ROI'])

print(key, value)

Все практически получилось, только не могу весь словарь вывести и каждый с новой строки.
При print(key, value) выдает только:
twitter {'revenue': 11, 'cost': 24, 'ROI': -54.17}
Либо если print(results) то
{'vk': {'revenue': 103, 'cost': 98, 'ROI': 5.1}, 'yandex': {'revenue': 179, 'cost': 153, 'ROI': 16.99}, 'facebook': {'revenue': 103, 'cost': 110, 'ROI': -6.36}, 'adwords': {'revenue': 35, 'cost': 34, 'ROI': 2.94}, 'twitter': {'revenue': 11, 'cost': 24, 'ROI': -54.17}}
А хотелось бы отделить каждый словарь друг от друга
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 668
475
83
results = {
'vk': {'revenue': 103, 'cost': 98},
'yandex': {'revenue': 179, 'cost': 153},
'facebook': {'revenue': 103, 'cost': 110},
'adwords': {'revenue': 35, 'cost': 34},
'twitter': {'revenue': 11, 'cost': 24},
}

for key, value in results.items():
#print('revenue', value['revenue'])
#print('cost', value['cost'])
value['ROI'] = round(((value['revenue'] / value['cost']) - 1)*100 , 2)
#print('ROI', value['ROI'])

print(key, value)

Все практически получилось, только не могу весь словарь вывести и каждый с новой строки.
При print(key, value) выдает только:
twitter {'revenue': 11, 'cost': 24, 'ROI': -54.17}
Либо если print(results) то
{'vk': {'revenue': 103, 'cost': 98, 'ROI': 5.1}, 'yandex': {'revenue': 179, 'cost': 153, 'ROI': 16.99}, 'facebook': {'revenue': 103, 'cost': 110, 'ROI': -6.36}, 'adwords': {'revenue': 35, 'cost': 34, 'ROI': 2.94}, 'twitter': {'revenue': 11, 'cost': 24, 'ROI': -54.17}}
А хотелось бы отделить каждый словарь друг от друга
Выводит всех, вам нужно чтобы print был в цикле for
Python:
results = {
'vk': {'revenue': 103, 'cost': 98},
'yandex': {'revenue': 179, 'cost': 153},
'facebook': {'revenue': 103, 'cost': 110},
'adwords': {'revenue': 35, 'cost': 34},
'twitter': {'revenue': 11, 'cost': 24},
}

for key, value in results.items():
    #print('revenue', value['revenue'])
    #print('cost', value['cost'])
    value['ROI'] = round(((value['revenue'] / value['cost']) - 1)*100 , 2)
    #print('ROI', value['ROI'])

    print(key, value)
 
  • Мне нравится
Реакции: RSL161

RSL161

Новичок
Пользователь
Сен 26, 2020
5
0
1
Спасибо, заработало!)
 

Форум IT Специалистов