我如何编写一个函数来转换RDD,这是一个单词列表 ['Alpha','Beta','Gamma','Beta','Alpha'] 成对RDD,其中包含唯一的单词和出现的次数,在这种情况下就是这样 [('Alpha',1),('Beta',2),('Gamma',2)] ?
答案 0 :(得分:0)
使用collections.Counter dict:
from collections import Counter
print(Counter(['Alpha', 'Beta', 'Gamma', 'Beta', 'Alpha'])).items()
[('Alpha', 2), ('Beta', 2), ('Gamma', 1)]
如果您想要从最低频率到最高频率,请使用.most_common:
from collections import Counter
l = ['Alpha', 'Beta', 'Gamma', 'Beta', 'Alpha']
print(list(reversed(Counter(l).most_common())))
[('Gamma', 1), ('Beta', 2), ('Alpha', 2)]
如果您希望按照首次出现的顺序使用它们,请使用OrderedDict:
from collections import OrderedDict
l = ['Alpha', 'Beta', 'Gamma', 'Beta', 'Alpha']
od = OrderedDict.fromkeys(l,0)
for ele in l:
od[ele] += 1
print(od.items())
[('Alpha', 2), ('Beta', 2), ('Gamma', 1)]