存在一个列表,其中每个项目都是成员?
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
我目前正在尝试为一些 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