我正在尝试根据不同的单词列表计算嵌套列表中的单词出现次数。例如:
one = [['apple','pear','bear'],['apple','drawers','bear','grapes']]
word = ['pear','oranges','pineapple','scones','drawers']
我想计算列表单词中每个单词在名为one
的每个嵌套列表中出现的次数。作为输出我想要:
new_one = [[0,1,0],[0,1,0,0]]
我尝试使用.count
,但.count
不使用列表中的元素,而是使用单个字符串或整数。我无法使用for循环来使用.count()
索引单词元素。对于Counter来说也是如此,它似乎不适用于嵌套列表,也不适用于for循环。
我可以考虑使用字典但最终我希望new_one
成为列表列表,因为我想稍后将new_one转换为矩阵,其中一行是矩阵的一行。
答案 0 :(得分:0)
one = [['apple','pear','bear'],['apple','drawers','bear','grapes']]
word = ['pear','oranges','pineapple','scones','drawers']
output = []
# create a dict and populate with keys being unique words and values being its occurances
d = {}
for x in one:
for y in x:
d[y] = word.count(y)
# go through each word in sublist and find the count from the dict
for x in ne:
output.append([d[y] for y in x])
这应该给你:
output = [[[0, 1, 0], [0, 1, 0, 0]]]
答案 1 :(得分:0)
这是一种可能的方法:
[[[0, 1, 0], [0, 0, 0, 0]],
[[0, 0, 0], [0, 0, 0, 0]],
[[0, 0, 0], [0, 0, 0, 0]],
[[0, 0, 0], [0, 0, 0, 0]],
[[0, 0, 0], [0, 1, 0, 0]]]
输出:
production
答案 2 :(得分:0)
最简单的方法是使用嵌套列表解析:
[[word.count(w) for w in l] for l in one]
这效率稍低,因为它每次都计算每个单词的出现次数(例如,它会两次执行word.count('apple')
),但如果你的列表不长,那么它就会赢得是个问题。
答案 3 :(得分:0)
首先我们迭代出列表,即一个。对于每个列表,我们迭代元素,即苹果梨熊等。如果这匹配列表字,那么我们附加到临时列表new_one_temp。在每个外部迭代中,我们附加到new_one列表。
one=[['apple','pear','bear'],['apple','drawers','bear','grapes']]
word=['pear','oranges','pineapple','scones','drawers']
new_one=[]
for list_elem in one:
new_one_temp=[]
for word_text in list_elem:
if word_text in word:
new_one_temp.extend([1])
else:
new_one_temp.extend([0])
new_one.append(new_one_temp)
print new_one
输出
new_one = [[0, 1, 0], [0, 1, 0, 0]]