layan
(Vi)
1
I have this list:
[“Carrot: 123.4, True”, “Sweet potato: 100.0, True”, “Salmon: 120.0, False”]
But every time I can receive different ingredients and different number of ingredients.
What I need to get its dictionary:
{‘Carrot’: {‘nutrition_value’: 123.4, ‘vegan’: True}, ‘Sweet potato’: {‘nutrition_value’: 100.0, ‘vegan’: True}, ‘Salmon’: {‘nutrition_value’: 120.0, ‘vegan’: False}}
result = {}
for ing in ingredients:
name, data = ing.split(': ') # name = 'Carrot'; data = '123.4, True'
nutrition, vegan = data.split(', ')
nutrition = float(nutrition)
vegan = vegan == 'True'
result[name] = {‘nutrition_value’: nutrition, ‘vegan’: vegan}
I would recommend using a named tuple instead of a dictionary (more efficient, especially since this data does not need to be changed).
from typing import NamedTuple
class Ingredient(NamedTuple):
nutrition_value: float
vegan: bool
...
result[name] = Ingredient(nutrition, vegan)
print("Nutritions:", result[name].nutrition_value, "Is vegan:", result[name].vegan)
1 Like