Python函数将列表RDD转换为具有唯一字及其计数的对RDD?

时间:2015-06-15 12:28:37

标签: python function rdd

我如何编写一个函数来转换RDD,这是一个单词列表 ['Alpha','Beta','Gamma','Beta','Alpha'] 成对RDD,其中包含唯一的单词和出现的次数,在这种情况下就是这样 [('Alpha',1),('Beta',2),('Gamma',2)] ?

1 个答案:

答案 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)]