TypeError:类型' map'的对象没有len()Python3

时间:2017-01-27 22:11:06

标签: python python-3.x apache-spark pyspark k-means

我试图使用Pyspark实现KMeans算法,它在while循环的最后一行给出了上述错误。它在循环外工作正常,但在我创建循环后它给了我这个错误 我该如何解决这个问题?

<button>Click me</button>
<div id="success"></div>

1 个答案:

答案 0 :(得分:10)

您收到此错误是因为您尝试获取len map对象(生成器类型)且不支持abstract。例如:

len

为了找到长度,您必须将>>> x = [[1, 'a'], [2, 'b'], [3, 'c']] # `map` returns object of map type >>> map(lambda a: a[0], x) <map object at 0x101b75ba8> # on doing `len`, raises error >>> len(map(lambda a: a[0], x)) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: object of type 'map' has no len() 输入到list(或tuple),然后您可以调用map。例如:

len

或者,使用列表理解(不使用>>> len(list(map(lambda a: a[0], x))) 3 )创建列表更好:

map