在Python中将字符串与多个项进行比较
我正在尝试将一个叫做 facility
的字符串与多个可能的字符串进行比较,以测试它是否有效。有效的字符串有:
auth, authpriv, daemon, cron, ftp, lpr, kern, mail, news, syslog, user, uucp, local0, ... , local7
除了下面这种方法,还有没有更有效的方式来实现这个呢:
if facility == "auth" or facility == "authpriv" ...
3 个回答
3
为了高效地检查一个字符串是否与多个字符串中的某一个匹配,可以使用这个方法:
allowed = set(('a', 'b', 'c'))
if foo in allowed:
bar()
set()
是一种经过优化的集合,它可以快速判断某个项目是否在其中。这种集合是无序的,并且会对里面的项目进行哈希处理。
11
除非你的字符串列表变得非常长,否则像这样做可能是最好的选择:
accepted_strings = ['auth', 'authpriv', 'daemon'] # etc etc
if facility in accepted_strings:
do_stuff()
63
如果你的字符串列表真的非常长,那就用集合(set)吧:
accepted_strings = {'auth', 'authpriv', 'daemon'}
if facility in accepted_strings:
do_stuff()
在集合中检查一个元素是否存在,平均来说是O(1)的速度,也就是说非常快。