我试图在一个单词的中间位置找到一个字母的出现。我能够弄清楚第一个也是最后一个。中间位置不是第一个和最后一个。任何人都可以帮我解决这个问题吗?
words = words.flatMap(lambda line: line.split())
chars = words.map(lambda x: (x,list(x)))
occurrence1 = chars.map(lambda x: (('first',x[1]
[0]),1)).reduceByKey(lambda x, y: x+y)
occurrence2 = chars.map(lambda x: (('last',x[1]
[-1]),1)).reduceByKey(lambda x, y: x+y)
occurrence3 = chars.map(lambda x[1:-1]: x.countByKey())
print(occurrence1.collect())
print(occurrence2.collect())
#print(occurrence3.collect())
答案 0 :(得分:1)
删除第一个和最后一个元素并展平
from operator import add
words.flatMap(lambda xs: ((x, 1) for x in xs[1:-1])).reduceByKey(add)
按具体位置计算:
words.flatMap(
lambda xs: (((i, x), 1) for (i, x) in enumerate(xs[1:-1]))
).reduceByKey(add)