存在一个列表,其中每个项目都是成员?

Exists a list where every item is a member?

我目前正在尝试为一些 Spark Streaming 作业编写抽象,每个作业都有一部分代码在所有作业之间都是相同的(因此需要抽象)。

每个作业的格式是这样的格式:

dStream \
        .filter(lambda rec: rec[self.EVENT_KEY_VALUE[0]] in list(self.EVENT_KEY_VALUE[1])) \
        .filter(lambda rec: self.EVENT_FIELDS.issubset(set(rec.keys()))) \

for INPUT in INPUTS:
        dStream \
            .map(lambda rdd: format_record_keys_for_salesforce(self.INPUT))

for map_func in OPTIONAL_MAPS:
        dStream \
            .map(map_func)

return dStream.map(self.OUTPUT.project_row)

总是有一个 format_record_keys_for_salesforce 地图阶段和一个 dStream.map(self.OUTPUT.project_row) 阶段。问题来自前两个 filter()s。每个作业中几乎总是有两个过滤阶段,但有时作业不需要它。我宁愿过滤器是多余的,只做 return True 而不是让开发人员必须编写额外的代码。

那么,我怎样才能写一个 list ,其中任何任意值都是它的成员?我们事先不知道这些值,只知道它是列表的成员。

有点喜欢:

>> 'a' in list(all)
True
>> 5 in list(all)
True
>> *anything* in list(all)
True
>> ALL_NATURAL_NUMBERS in list(all)
True
>> ALL_SUBSETS_OF_NATURAL_NUMBERS in list(all)
True 
etc...

这是可能的还是我必须从我的抽象中删除这些阶段并留给开发人员写作业来决定他们是否需要过滤器?

如果我没理解错的话,你只是想模拟 __contains__ 运算符。所以也许是这样的:

class MockList(list):
    def __contains__(self, item):
        return True

如果我没理解错的话,你需要一个类似列表的对象,声称它包含任何对象。

您需要定义一个list-like class

我能想到的最简单的解决方案是一个肮脏的 hack:

class MyList(list):
    def __contains__(self, item):
        return True

然后对于分配给 anyValue 的任何值:

>>> anyValue in MyList([])
True