我正在解决一个问题,我必须使用pyspark中的map()函数将大约700万个列表值对转换为键值对,其中给定列表值对中使用的列表长度最多可以是20。
例如:
listVal= [(["ank","nki","kit"],21),(["arp","rpi","pit"],22)]
现在,我想要键值对作为
keyval= [("ank",21),("nki",21),("kit",21),("arp",22),("rpi",22),("pit",22)]
当我写作的时候
keyval= listval.map(lambda x: some_function(x))
其中某些函数()定义为:
def some_function(x):
shingles=[]
for i in range(len(x[0])):
temp=[]
temp.append(x[0][i])
temp.append(x[1])
shingles.append(tuple(temp))
return shingles
我没有得到所需的输出,因为我认为map()为列表中的一个项返回一个键值对,而不是多个键值对。我也尝试过其他东西,在网上搜索过,但没有找到任何相关的东西。
任何帮助都将不胜感激。
1条答案
按热度按时间nimxete21#
因此,利用您的局限性,这可以通过pyspark的.flatmap()实现
或者在一条线上