Как я могу разрешить моему словарю принимать дубликаты ключей [закрыто]
У меня есть функция, которая создает словарь списков:
def Planner(calories, dislikes):
carbs = Food.objects.filter(category='Carbs').exclude(name__in=dislikes)
proteins = Food.objects.filter(category='Protein').exclude(name__in=dislikes)
vegs = Food.objects.filter(category='Vegetables').exclude(name__in=dislikes)
carb1 = random.choice(carbs)
protein1 = random.choice(proteins)
veg1 = random.choice(vegs)
carb2 = random.choice(carbs)
protein2 = random.choice(proteins)
veg2 = random.choice(vegs)
veg_exclude = [veg1, veg2]
veg3 = Food.objects.filter(category='Vegetables').exclude(name__in=veg_exclude)[0]
meals = [carb1, protein1, carb2, protein2]
carb3 = random.choice(carbs)
protein3 = random.choice(proteins)
meals.append(carb3)
meals.append(protein3)
total_cals = sum(meal.calories * meal.portion_size_in_grams / 100 for meal in meals)
calories_short = calories - total_cals
calories_per_gram = sum(meal.calories * 1 / 100 for meal in meals)
extra_grams_needed = calories_short // calories_per_gram
meal_dict = {
meal.name: [meal.portion_size_in_grams + extra_grams_needed, meal.calories, meal.category, meal.pack_size]
for meal in meals}
meal_dict[veg1.name] = [veg1.portion_size_in_grams, veg1.calories, veg1.category, veg1.pack_size]
meal_dict[veg2.name] = [veg2.portion_size_in_grams, veg2.calories, veg2.category, veg2.pack_size]
meal_dict[veg3.name] = [veg3.portion_size_in_grams, veg3.calories, veg3.category, veg3.pack_size]
for key, value in meal_dict.items():
meal_plan_total_cals += value[0] * value[1] / 100
meal_dict['total_calories'] = meal_plan_total_cals
meal_dict['total_meals'] = 3
return meal_dict
Мне нужно, чтобы словарь мог принимать дубликаты ключей, поскольку иногда функция генерирует одно и то же блюдо дважды (что нормально), но когда оно добавляется в словарь, оно просто перезаписывает существующий ключ, что не является целевой функциональностью.
Как я могу изменить свой код так, чтобы meal_dict
допускал дубликаты?