Python-检查word是否与if语句中的单词列表匹配

Python-检查word是否与if语句中的单词列表匹配,python,if-statement,Python,If Statement,我试图用一个IF来检查一个特定的字符串是否同时与几个单词匹配。输入代码,它将如下所示: if shippingDest == "Spain": shippingRegion = "Spain" if shippingDest == "Portugal": shippingRegion = "Portugal" if shippingDest == ["France", "Germany", "Luxembourg", "Belgium", "United Kingdom"]:

我试图用一个IF来检查一个特定的字符串是否同时与几个单词匹配。输入代码,它将如下所示:

if shippingDest == "Spain":
    shippingRegion = "Spain"
if shippingDest == "Portugal":
    shippingRegion = "Portugal"
if shippingDest == ["France", "Germany", "Luxembourg", "Belgium", "United Kingdom"]:
    shippingRegion = "Euro1"
if shippingDest == ["Albania", "Andorra", "Austria", "Belarus", "Bosnia and Herzegovina", "Bulgaria", "Croatia", "Czech Republic", "Denmark", "Estonia", "Faroe Islands", "Finland", "Georgia", "Gibraltar", "Greece", "Hongary", "Iceland", "Ireland", "Italy", "Latvia", "Liechtenstein", "Lithuania", "Luxembourg", "Macedonia", "Malta", "Moldova", "Monaco", "Montenegro", "Netherlands", "Norway", "Poland", "Romania", "Russia", "San Marino", "Serbia", "Slovenia", "Svalbard and Jan Mayen", "Sweden", "Switzerland", "Ukraine", "Vatican City State"]:
    shippingRegion = "Euro2"
else:
    shippingRegion = "World"
if shippingDest in ("France", "Germany", "Luxembourg", "Belgium", "United Kingdom"):
    shippingRegion = "Euro1"
elif shippingDest in ("Albania", "Andorra", "Austria", "Belarus", "Bosnia and Herzegovina", "Bulgaria", "Croatia", "Czech Republic", "Denmark", "Estonia", "Faroe Islands", "Finland", "Georgia", "Gibraltar", "Greece", "Hongary", "Iceland", "Ireland", "Italy", "Latvia", "Liechtenstein", "Lithuania", "Luxembourg", "Macedonia", "Malta", "Moldova", "Monaco", "Montenegro", "Netherlands", "Norway", "Poland", "Romania", "Russia", "San Marino", "Serbia", "Slovenia", "Svalbard and Jan Mayen", "Sweden", "Switzerland", "Ukraine", "Vatican City State"):
    shippingRegion = "Euro2"
elif shippingDest in ("Portugal", "Spain"):
    shippingRegion = shippingDest:
else:
    shippingRegion = "World"
例如,当与德国进行核对时,shippingRegion将为1欧元。然而,它把它当作世界

有人能给我指出正确的方向,看看一个单词是否与一组单词中的任何一个匹配吗


谢谢,

您需要使用elif和in来检查会员资格,而不是==

发生的情况是shippingDest设置正确,然后最后一个if失败,因此执行else子句,导致World

如果您有一个使用dict的查找表,它将更有意义,并且更易于维护:

然后,一旦列出这些内容,您可以:

ship_to = shipping_destinations.get(country_name, 'World')
检索目标或将其默认为world。这将保存if语句,并且如果您有一个区域电子表格,则可以很容易地从中填充

if shippingDest == ["France", "Germany", "Luxembourg", "Belgium", "United Kingdom"]:
    shippingRegion = "Euro1"
这不会查看shippingDest是否是这些字符串之一,而是检查shippingDest是否等于该列表

相反,您可以使用:

if shippingDest in ["France", "Germany", "Luxembourg", "Belgium", "United Kingdom"]:
    shippingRegion = "Euro1"
由于前面的条件值为false,因此执行了else。此外,对于互斥条件,您希望使用elif,而不是后面跟着一个if语句的一系列if语句。在代码中,else仅与前面的if对应。

使用:

应用于列表时,in运算符检查列表中是否包含值

使用它可能更好,因为您的值没有顺序。集合语法如下所示:

{'something', 'something else', 'another thing', '...'}
它类似于列表,只是此数据结构没有顺序。与列表类似,您还可以使用in检查集合中是否包含特定值

注意:似乎您想要的是elif,而不是if-使用if可以使任何不在欧元区的国家成为世界区域,包括西班牙和葡萄牙。

替换==为in:

如果用elifs(即elseif)替换第一个if语句之后的if语句,代码的效率也会更高

此外,您可以将其缩短如下:

if shippingDest == "Spain":
    shippingRegion = "Spain"
if shippingDest == "Portugal":
    shippingRegion = "Portugal"
if shippingDest == ["France", "Germany", "Luxembourg", "Belgium", "United Kingdom"]:
    shippingRegion = "Euro1"
if shippingDest == ["Albania", "Andorra", "Austria", "Belarus", "Bosnia and Herzegovina", "Bulgaria", "Croatia", "Czech Republic", "Denmark", "Estonia", "Faroe Islands", "Finland", "Georgia", "Gibraltar", "Greece", "Hongary", "Iceland", "Ireland", "Italy", "Latvia", "Liechtenstein", "Lithuania", "Luxembourg", "Macedonia", "Malta", "Moldova", "Monaco", "Montenegro", "Netherlands", "Norway", "Poland", "Romania", "Russia", "San Marino", "Serbia", "Slovenia", "Svalbard and Jan Mayen", "Sweden", "Switzerland", "Ukraine", "Vatican City State"]:
    shippingRegion = "Euro2"
else:
    shippingRegion = "World"
if shippingDest in ("France", "Germany", "Luxembourg", "Belgium", "United Kingdom"):
    shippingRegion = "Euro1"
elif shippingDest in ("Albania", "Andorra", "Austria", "Belarus", "Bosnia and Herzegovina", "Bulgaria", "Croatia", "Czech Republic", "Denmark", "Estonia", "Faroe Islands", "Finland", "Georgia", "Gibraltar", "Greece", "Hongary", "Iceland", "Ireland", "Italy", "Latvia", "Liechtenstein", "Lithuania", "Luxembourg", "Macedonia", "Malta", "Moldova", "Monaco", "Montenegro", "Netherlands", "Norway", "Poland", "Romania", "Russia", "San Marino", "Serbia", "Slovenia", "Svalbard and Jan Mayen", "Sweden", "Switzerland", "Ukraine", "Vatican City State"):
    shippingRegion = "Euro2"
elif shippingDest in ("Portugal", "Spain"):
    shippingRegion = shippingDest:
else:
    shippingRegion = "World"

我还将您的列表转换为替换为[]的元组,因为您以后不需要更改它们,因此使它们不可变意味着使用的内存更少。

您想使用关键字elif-这与其他语言类似

此外,如果要测试字符串德语是否在列表中,请使用IN关键字而不是==。

请尝试输入:

你可以用在

if shippingDest in ["France", "Germany", "Luxembourg", "Belgium", "United Kingdom"]:

感谢所有的快速回答。开源社区和我得到的帮助给我留下了深刻的印象。为大家干杯@砖头没问题。祝你好运。如果我能代表并投票选出一个以上的答案就好了!谢谢,这提供了一种不同的、更有效的方法,我会研究一下。
if shippingDest in ("France", "Germany", "Luxembourg", "Belgium", "United Kingdom"):
    shippingRegion = "Euro1"
elif shippingDest in ("Albania", "Andorra", "Austria", "Belarus", "Bosnia and Herzegovina", "Bulgaria", "Croatia", "Czech Republic", "Denmark", "Estonia", "Faroe Islands", "Finland", "Georgia", "Gibraltar", "Greece", "Hongary", "Iceland", "Ireland", "Italy", "Latvia", "Liechtenstein", "Lithuania", "Luxembourg", "Macedonia", "Malta", "Moldova", "Monaco", "Montenegro", "Netherlands", "Norway", "Poland", "Romania", "Russia", "San Marino", "Serbia", "Slovenia", "Svalbard and Jan Mayen", "Sweden", "Switzerland", "Ukraine", "Vatican City State"):
    shippingRegion = "Euro2"
elif shippingDest in ("Portugal", "Spain"):
    shippingRegion = shippingDest:
else:
    shippingRegion = "World"
if shippingDest in ["France", "Germany", "Luxembourg", "Belgium", "United Kingdom"]:
    shippingRegion = "Euro1"
if shippingDest in ["France", "Germany", "Luxembourg", "Belgium", "United Kingdom"]: