【问题标题】:Python Check if list of sets contains itemPython检查集合列表是否包含项目
【发布时间】:2018-03-18 06:48:54
【问题描述】:

假设我有L = [{'G'}, {'D'}, {'B','C'}]

我想检查'C'是否在L中。

我尝试做{'C'} in L,但它返回False

如何检查“C”是否在 L 中?

【问题讨论】:

  • {'B','C'} 在 L 中,不完全是 'C'。
  • any(['C' in s for s in L]) 可以。
  • @ZdaR 为什么在那里使用 listcmp 而不是genexpr?当你要做的只是将它传递给any,它只会在上面调用iter,这只是在浪费时间和内存。

标签: python list set


【解决方案1】:

您正在将元组与字符串匹配。你要做的就是——

  1. 使用列表推导迭代 setlist
  2. 对于每个set,检查搜索字符串是否存在
  3. 获取boolean 值列表并将其放入any() 函数,如果list 中的任何一个boolean 项是True,则返回True

你应该这样做 -

L = [{'G'}, {'D'}, {'B','C'}]
print(any([ 'C' in i for i in L]))

输出

True

再举个例子——

print(any([ 'X' in i for i in L]))

输出

False

【讨论】:

  • 哪里有元组?自从您回答问题后,他是否编辑过问题?
  • 谢谢,如果您不介意,我还有一个问题。它的评论如下
【解决方案2】:

您还可以根据真假条件过滤结果:

L = [{'G'}, {'D'}, {'B','C'}]
word='C'

print([True if list(filter(lambda x:word in x,L)) else False])

输出:

[True]

根据评论更新:

你可以试试这个:

def union_similar(list_data,values_data):
    checker = {}
    final_ = []
    for item in list_data:
        for values in values_data:
            if values in item:
                if values not in checker:
                    checker[values] = [item]
                else:
                    checker[values].append(item)

    sub_ = set()
    for check, no in checker.items():

        if len(no) > 1:

            for i in no:
                sub_.update(*i)

                list_data.remove(i)
        else:
            sub_.update(*no[0])
            list_data.remove(no[0])

    list_data.append(sub_)
    return list_data

print(union_similar(L,c))

输出:

测试用例 1:

L = [{'G'}, {'D'}, {'B','C'}]
c=['C','G']

输出:

[{'D'}, {'B', 'C', 'G'}]

Test_case_2:

L = [{'G'}, {'D'}, {'B','C'},{'U','C'}]
c=['C','G']

输出:

[{'D'}, {'U', 'B', 'G', 'C'}]

【讨论】:

  • 好的,谢谢!另外,如何检查“C”和“G”是否在该列表中的不同集中?
  • 让 c1 = 'C' 和 c2 = 'G'。我想检查 c1 和 c2 是否在不同的集合中。如果它们将它们结合在一起,那么我会得到 [{'G','B',C'},{'D'}]
  • 如果它们在不同的集合中,则合并它们,如果它们在同一集合中,那么?
猜你喜欢
  • 1970-01-01
  • 2019-01-28
  • 2012-08-26
  • 1970-01-01
  • 1970-01-01
  • 2018-01-18
  • 2023-03-26
  • 2017-06-04
  • 2020-04-02
相关资源
最近更新 更多