66365


現在入門python3を使用し勉強しております。  
value中にベルモットかオレンジジュースが入っているkeyを取り出したいのですが、  
下記のコードではすべてのkeyの名前が結果として出てしまいます。理由を教えてくださると幸いです。

[code]

    drinks = {
     "martini": {"vodka", "vermouth"},
     "black russian": {"vodka", "kahlua"},
     "white russian": {"cream", "kahlua", "vodka"},
     "manhattan": {"rye", "vermouth", "bitters"},
     "screwdriver": {"orange juice", "vodka"}
     }
    for key, value in drinks.items():
        if "vermouth" or "orange juice" in value:
            print(key)
    
[/code]


CC BY-SA 4.0
2020-05-07T01:58:43.760
66364
2020-05-07T02:37:59.260
2020-05-07T02:37:59.260
19110
39937
question
python
pythonでの集合処理で全てのkeyが結果として出てしまう


そのように書くと、`if ("vermouth") or ("orange juice" in
value):`と書いたのと同じとなり、文字列単独では必ず`True`なので全て成立し、`print`することになります。


CC BY-SA 4.0
2020-05-07T02:21:08.047
66365
2020-05-07T02:21:08.047
26370
66364
answer


`in`が`or`よりも優先順位が高いため、ifが常に真になってしまうからです。

次のように書けば、お望みの結果が得られると思います。

[code]

    if ("vermouth" in value) or ("orange juice" in value):
    
[/code]

以下のように、適当な文字列を書いても真になりました。※知らなかった

[code]

    if "XXX":
    
[/code]


CC BY-SA 4.0
2020-05-07T02:32:59.577
66369
2020-05-07T02:32:59.577
35558
66364
answer