Advertisement
Guest User

Untitled

a guest
Dec 20th, 2020
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.48 KB | None | 0 0
  1. data = data.split("\n")
  2.  
  3. all_ingredients = set()
  4. class Food:
  5.     def __init__(self, s):
  6.         self.ingredients = s[:s.index("(")].strip().split(" ")
  7.         self.allergens = s[s.index("(contains") + len("(contains"):-1].strip().split(", ")
  8.  
  9. foods = list(map(Food, data))
  10. allergy_dict = {}
  11. for food in foods:
  12.     all_ingredients = all_ingredients.union(set(food.ingredients))
  13.     for allergen in food.allergens:
  14.         if not allergen in allergy_dict:
  15.             allergy_dict[allergen] = set(food.ingredients)
  16.         else:
  17.             allergy_dict[allergen] = allergy_dict[allergen].intersection(food.ingredients)
  18.  
  19. allergy_ingredients = set()
  20. for k in allergy_dict:
  21.     allergy_ingredients = allergy_ingredients.union(allergy_dict[k])
  22.  
  23. safe_ingredients = all_ingredients.difference(allergy_ingredients)
  24. print(safe_ingredients)
  25.  
  26. tally = 0
  27. for f in foods:
  28.     for i in f.ingredients:
  29.         if i in safe_ingredients:
  30.             tally += 1
  31. print(tally)
  32.  
  33. print(allergy_dict)
  34. out = []
  35. while len(allergy_dict) > 0:
  36.     a = None
  37.     rem = None
  38.     for a in allergy_dict:
  39.         if len(allergy_dict[a]) == 1:
  40.             rem = allergy_dict[a].pop()
  41.             out.append((a, rem))
  42.             break
  43.     if rem == None:
  44.         break
  45.     del allergy_dict[a]
  46.     for b in allergy_dict:
  47.         if rem in allergy_dict[b]:
  48.             allergy_dict[b].remove(rem)
  49. print("\n")
  50. print(allergy_dict)
  51. print(sorted(out))
  52. print(",".join(list(map(lambda x: x[1], sorted(out)))))
  53.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement