使用蟒蛇。
試圖制作一個食譜程式,告訴我可以根據我現有的配料(清單)制作什么食物(關鍵)。
這是我的飯菜字典,關鍵是飯菜,值是所需的配料:
breakfast = {
"cerealBowl" : ["milk", "cereal"],
"toast" : ["bread", "butter"],
"eggsBacon" : ["eggs", "bacon"],
"frenchToast" : ["bread", "eggs"]
}
這是我目前擁有的成分清單:
currentIngredients = ["milk", "bread", "rice", "butter", "eggs"]
如果所有值都在我當前的成分串列中,我希望程式回傳我可以制作的餐點(鍵)。
到目前為止,我有:
def scanRecipes():
for item in currentIngredients:
我不確定如何設定我的下一個 for 回圈/if 陳述句來迭代我的早餐字典值并將成分與我的 currentIngredients 串列進行比較。
希望獲得類似于以下內容的輸出:
"Meals available to make..." "toast" with ["bread", "butter"],"frenchToast" with ["bread", "eggs"]
uj5u.com熱心網友回復:
currentIngredients = set(["milk", "bread", "rice", "butter", "eggs"])
for key,ing in breakfast.items():
if currentIngredients.issuperset(set(ing)):
print( "You can make", key )
uj5u.com熱心網友回復:
遍歷您的食譜字典并過濾到您擁有所有成分的食譜:
breakfast_recipes = {
"cerealBowl" : ["milk", "cereal"],
"toast" : ["bread", "butter"],
"eggsBacon" : ["eggs", "bacon"],
"frenchToast" : ["bread", "eggs"]
}
def get_recipes(ingredients):
return {
r: i for r, i in breakfast_recipes.items()
if set(ingredients).issuperset(set(i))
}
current_ingredients = ["milk", "bread", "rice", "butter", "eggs"]
print("Meals available to make...")
for r, i in get_recipes(current_ingredients).items():
print(f"{r} with {i}")
Meals available to make...
toast with ['bread', 'butter']
frenchToast with ['bread', 'eggs']
uj5u.com熱心網友回復:
可用餐點
breakfast如果每種必需的成分都在您的currentIngredients清單中,您可以查看每餐:
available_meals = []
for meal, ingredients in breakfast.items():
available_ingrs = 0
for ingr in ingredients:
if ingr in currentIngredients:
available_ingrs = 1
if available_ingrs == len(ingredients): #if all required ingredients were met
available_meals.append((meal, ingredients))
其他答案在使用該issuperset方法時更加優雅。如果 A 包含 B 的所有元素,則稱 A 是 B 的超集。在這種情況下,currentIngredients可能是ingredientsif的超集,currentIngredients包含 的所有元素ingredients:
set(currentIngredients).issuperset(ingredients) #returns a boolean
請注意,該issuperset函式是該set型別的方法。這就是為什么您必須轉換currentIngredients為set.
列印輸出
available_meals一個迭代串列的簡單列印程式:
def printMeals():
print("Meals available to make...")
for elem in available_meals:
print(repr(elem[0]), "with", elem[1])
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/451067.html
