首页 > 解决方案 > 使用 set(list).difference 和条件语句引发异常

问题描述

我有两个清单:

List1 = [A,B,C,D,E,F,G,H]
list2 = [A,B,C,D]

我想确保 list1 至少包含 list2 的所有元素(顺序无关紧要)。如果不是,我想提出一个异常。

set = set(list2).difference(List1)

if set != "":
    raise Exception('Missing required columns',set)

但是打印set变量返回这个:set()。我不确定如何解释它。我希望有一个空字符串。我怎样才能建立我的条件语句呢?我觉得我没有正确地做到这一点。

标签: python-3.x

解决方案


逻辑有2个问题。

  1. 您正在分配set的结果set.difference。这可能是不可取的。

  2. 您正在将 a set(由返回set.difference)与str( "") 进行比较,因此逻辑将始终引发异常。

也许尝试:

diffset = set(list2).difference(List1)
if diffset:
    raise Exception(f'Missing required columns {diffset}')

推荐阅读