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

Python 从较大的词汇表中计算多个列表中的单词频率?,python,text,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] 我想我需要对单词进行排序,但如

我知道如何计算列表中元素的频率,但这里有一个稍微不同的问题。我有一套更大的词汇表和一些只使用部分词汇表的列表。以数字代替文字为例:

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”记录?

这可以使用列表对象内置的
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
中的每个值,累积它们的频率。

这可以在列表中使用列表对象的内置
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
中的每个值,积累它们的频率。

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


您还可以通过以下操作(Python 2)实现这一点: