【问题标题】:Using a Set To Search inside a String使用集合在字符串中搜索
【发布时间】:2018-04-14 19:06:52
【问题描述】:

所以,假设我有以下内容:

String = "A"

if String in {"A", "B", "C"}:
    print("True")

else:
    print("False")

现在这肯定会打印字符串“True”。

好的,现在假设我们将其更改为:

字符串 = "ABCD"

从这一点开始,我的目标是使用与之前相同的集合,但这次如果有任何值在给定的字符串内,则返回“True”。

我的想法:

String = "ABCD"

if {"A", "B", "C"} in String:
        print("True")

    else:
        print("False")

我试过了,没用。

我相信我可以用很多 if 语句来做到这一点,但是我希望有办法解决这个问题。

完成我想做的事情的最佳方式是什么?

【问题讨论】:

  • 您可能正在寻找all(i in String for i in {'A', 'B', 'C'})
  • mhh ... 问题标题中的Dictionary 在哪里?
  • 我认为 {} 是字典,抱歉我应该编辑它吗?
  • 以下解决方案之一有帮助吗?如果是这样,请考虑接受(左侧的绿色勾号),以便其他用户知道。

标签: python string python-3.x if-statement set


【解决方案1】:

{"A", "B", "C"} 是一个集合,字符串不包含集合,因此 in 运算符在您的特定示例中不起作用。

如果要检查集合中的任何值是否在字符串内,可以使用any() 函数。

String = "ABCD"
a_set = {"A", "B", "C"}
print(any(i in String for i in a_set))
>>>True

【讨论】:

  • 为什么不只是 print(all(i in String for i in {'A', 'B', 'C'})),不需要不必要的 if/else 语句。
【解决方案2】:

您可以将您的字符串转换为set 并测试两组的交集是否为非空。

这是实现上述逻辑的 Pythonic 方式:

mystr = "ABCD"

if {"A", "B", "C"} & set(mystr):
    print("True")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 2014-02-18
    • 2015-01-07
    相关资源
    最近更新 更多