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

问题描述 投票:0回答:3

我正在尝试将一个名为

facility
的字符串与多个可能的字符串进行比较,以测试它是否有效。有效的字符串是:

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

除了以下之外,还有其他有效的方法吗:

if facility == "auth" or facility == "authpriv" ...
python string string-comparison
3个回答
58
投票

如果,OTOH,您的字符串列表确实长得可怕,请使用集合:

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

if facility in accepted_strings:
    do_stuff()

集合中的包含测试平均为 O(1)。


11
投票

除非你的字符串列表长得可怕,否则这样的东西可能是最好的:

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

if facility in accepted_strings:
    do_stuff()

3
投票

要有效地检查一个字符串是否匹配多个字符串之一,请使用:

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

set()
s 是散列的,无序的项目集合,经过优化以确定给定项目是否在其中。

© www.soinside.com 2019 - 2024. All rights reserved.