answer9_3_1.py
menu = {
"カツ丼": "乳 卵 小麦",
"天そば": "卵 小麦 そば えび",
"かに玉": "卵 小麦 かに",
"鶏ピー": "小麦 落花生",
}
choice = input("メニューを選んで下さい:")
allergen = set()
for dish in choice.split():
allergen |= set(menu[dish].split())
print(allergen)
# 章末問題 9章【3】(1)解答例
# 9~11行目で、入力されたメニューに入っているアレルギー物質
# すべてを集合に集めます。9行目でまずallergenを空集合にします。
# 10行目からのループでは、入力された文字列を空白文字で切って、
# そのそれぞれをキーとして辞書menuを引き、得られた値を
# 空白文字で切ってリストにしてから、それを集合のコンストラクタ
# setに与えて集合にして、allergenに加えています。
# | は和集合を作る演算なので、累算代入 |= で、右辺の集合の要素が
# 左辺の集合に加わった集合が得られます。