gpt4 book ai didi

python - Python 3 中 Pyspark 的 takeOrdered 键错误

转载 作者:行者123 更新时间:2023-11-28 22:42:30 26 4
gpt4 key购买 nike

我在使用 Python 3.4.2 和 Spark 1.4.1 的 PySpark 中 takeOrdered 函数时遇到错误,它应该支持 Python 3。

sc.parallelize([("a", 10), ("c", 5), ("b", 7)]).takeOrdered(3, key=lambda (k,v): -v)

File "<stdin>", line 1
sc.parallelize([("a", 10), ("c", 5), ("b", 7)]).takeOrdered(3, key=lambda (k,v): -v)
^
SyntaxError: invalid syntax

此错误仅在我使用 Python 3 时发生。它在 Python 2.7 中工作得很好。

此外,作为比较,这行代码在 Python 3 中运行得非常好:

sc.parallelize([("a", 10), ("c", 5), ("b", 7)]).takeOrdered(3, key=lambda (k,v): -v)

有人遇到同样的错误吗?或者我错过了什么?谢谢

最佳答案

导致错误的是您的 lamba 函数。

这是因为您使用的是 Python 3。Python 3 中删除了元组参数解包。请参阅文档 here

您可以手动解压元组:

sc.parallelize([("a", 10), ("c", 5), ("b", 7)]).takeOrdered(3, key=lambda kv: -kv[1])

关于python - Python 3 中 Pyspark 的 takeOrdered 键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31634034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com