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

发布于 2024-11-26 21:08:47 字数 310 浏览 0 评论 0原文

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

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

除了以下之外,是否有一种有效的方法可以做到这一点:

if facility == "auth" or facility == "authpriv" ...

I'm trying to compare a string called facility to multiple possible strings to test if it is valid. The valid strings are:

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

Is there an efficient way of doing this other than:

if facility == "auth" or facility == "authpriv" ...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

生来就爱笑 2024-12-03 21:08:47

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

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

if facility in accepted_strings:
    do_stuff()

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

If, OTOH, your list of strings is indeed hideously long, use a set:

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

if facility in accepted_strings:
    do_stuff()

Testing for containment in a set is O(1) on average.

孤芳又自赏 2024-12-03 21:08:47

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

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

if facility in accepted_strings:
    do_stuff()

Unless your list of strings gets hideously long, something like this is probably best:

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

if facility in accepted_strings:
    do_stuff()
千寻… 2024-12-03 21:08:47

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

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

set() 是经过哈希处理、无序的项目集合,经过优化,可以确定给定的项目是否在其中。

To efficiently check if a string matches one of many, use this:

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

set()s are hashed, unordered collections of items optimized for determining whether a given item is in them.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文