Python - 如果 StringSet 中有一个 String

Python - if StringSet has a String in it

我搜索得相当彻底,没有找到 suitable 解决方案。我是 Python/Programming 的新手,所以非常感谢能得到的任何建议:

我正在尝试从 StringSet 中搜索字符串,这就是我正在尝试执行的操作,但未获得值。

string_set = {'"123", "456", "789"'}
value = '123'

values_list = []

def fun():
    for i in string_set:
         if i in value:
             output=LookupTables.get('dynamo-table', i, {})
             
    return output

fun()

使用上面的方法,如果它的值在字符串集中,那么它将 return 我的 dynmodb table 中的值。 Nothe:我的 table 中可能有超过 5000 个值,所以我想尽早 return.

也许你应该先删除多余的''

string_set = {'"123", "456", "789"'}   # this set has just one value '"123", "456", "789"'

string_set_fixed =  {"123", "456", "789"} 

试试这个:

string_set = {"123", "456", "789"}
value = '123'

values_list = []

def fun():
    if value in string_set:
        output = LookupTables.get('dynamo-table', value, {})
    return output

fun()

解释:

  • 您对 string_set 的定义包含一对无关的 ' ';
  • 当您测试 i in value 时,您是在将 ivalue 的所有子字符串进行比较,而不是与整个字符串进行比较。

我假设您只是检查 123 是否在 "123", "456", "789" 中,因为您将它用单引号括起来了:

表示让我们使用:

strset =  {"123", "456", "789"} 

如果你必须使用那个奇怪的变量怎么办?

这应该使它可用

strset = {'"123", "456", "789"'}

removed = next(iter(strset))
strset.update((removed).split())
strset.remove(removed)

strset = set([i.strip(",").strip('"') for i in strset])

另一种更简洁的方式:

strset = {'"123", "456", "789"'}

exec(f"strset = {next(iter(strset))}")

print("123" in strset)

现在检查 value 是否在里面:

if value in strset:
    #do code here