从较大的词汇表中计算多个列表中单词的频率?

时间:2017-06-08 20:08:49

标签: python text

我知道如何计算列表中元素的频率,但这是一个略有不同的问题。我有一套更大的词汇量和一些只使用部分词汇量的列表。使用数字而不是单词作为例子:

vocab=[1,2,3,4,5,6,7]
list1=[1,2,3,4]
list2=[2,3,4,5,6,6,7]
list3=[3,2,4,4,1]

并且我希望在不使用单词时输出保持为“0”:

count1=[1,1,1,1,0,0,0]
count2=[0,1,1,1,1,2,1]
count3=[1,1,1,2,0,0,0]

我想我需要对单词进行排序,但如何保留“0”记录?

2 个答案:

答案 0 :(得分:2)

这可以使用列表对象的内置count函数在列表推导中完成。

>>> vocab = [1, 2, 3, 4, 5, 6, 7]
>>> list1 = [1, 2, 3, 4]
>>> list2 = [2, 3, 4, 5, 6, 6, 7]
>>> list3 = [3, 2, 4, 4, 1]
>>> [list1.count(v) for v in vocab]
[1, 1, 1, 1, 0, 0, 0] 
>>> [list2.count(v) for v in vocab]
[0, 1, 1, 1, 1, 2, 1]
>>> [list3.count(v) for v in vocab]
[1, 1, 1, 2, 0, 0, 0]

迭代vocab中的每个值,累计它们的频率。

答案 1 :(得分:1)

你也可以通过以下方式实现这一点(Python 2):

map(lambda v: list1.count(v), vocab)