繁体   English   中英

Python检查集合列表是否包含项目

[英]Python Check if list of sets contains item

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

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

我尝试{'C'} in L执行{'C'} in L ,但返回False

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

您正在用字符串匹配元组。 您要做的是-

  1. 迭代listset使用列表理解
  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

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

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'}]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM