将字符串与Python中的多个项目进行比较

时间:2011-07-27 00:35:44

标签: python string string-comparison

我正在尝试将名为facility的字符串与多个可能的字符串进行比较,以测试它是否有效。有效字符串是:

auth, authpriv, daemon, cron, ftp, lpr, kern, mail, news, syslog, user, uucp, local0, ... , local7

除了:

之外,还有一种有效的方法吗?
if facility == "auth" or facility == "authpriv" ...

3 个答案:

答案 0 :(得分:29)

如果,OTOH,你的字符串列表确实很长,请使用集合:

accepted_strings = {'auth', 'authpriv', 'daemon'}

if facility in accepted_strings:
    do_stuff()

集合中的遏制测试平均为O(1)。

答案 1 :(得分:10)

除非你的字符串列表变得非常长,否则这样的事情可能是最好的:

accepted_strings = ['auth', 'authpriv', 'daemon'] # etc etc 

if facility in accepted_strings:
    do_stuff()

答案 2 :(得分:2)

要有效地检查字符串是否与众多字符串匹配,请使用:

allowed = set(('a', 'b', 'c'))
if foo in allowed:
    bar()

set()是经过优化的无条件项目集合,用于确定给定项目是否在其中。