我有这样的元组:
('id1', ['date', 'type', 'value', '2017-11-11 08:32:46.934', 'no_error', '54.64325', '2017-11-11 08:32:47.356', 'no_error', '76.34553']
我只想检索浮动的元素。我只找到了解决方案,如果值只是一个元素而不是一个列表,则使用以下内容:
filter(lambda t: is_float(t[1]) == True)
is_float是我创建的一个函数,顾名思义,如果值是float,它将返回true。我该怎么解决?
您可以通过if子句的列表理解来实现它:
def is_float(s):
try:
float(s)
return True
except ValueError:
return False
rdd.map(lambda key, list_value: (key, [element for element in list_value if is_float(element)]))
不过,这不会很有表演性。
更新:我修改了代码以包含OP的注释,即列表元素是字符串。
这就是isinstance()
的作用。如果第一个参数是第二个参数的实例,它将返回True
。
>>> isinstance(1, float)
False
>>> isinstance("1.0", float)
False
>>> isinstance(1.0, float)
True