python 中的矩阵搜索词
matrix searching word in python
我需要构建一个函数来从字母矩阵中的列表中搜索单词,
如果一个词存在,该函数将 return 元组列表与矩阵中的词。在每个元组中有一个单词和它在矩阵中出现的次数。(单词,数字)
我卡住了,我想得到帮助。
def right(word_list, matrix):
sum_lst = []
one_word = [''.join(row) for row in matrix]
for word in word_list:
for string in one_word:
print(string)
count =string.count(word)
if word in string:
if (word,count) not in sum_lst:
sum_lst.append((word, count))
return sum_lst
这让我想起了一个事实,即一个词出现了一次,即使它实际上出现了不止一次。
It brings me back to the fact that a word appears once even if it actually appears more than once.
如果不同,posted 代码将抓取字数,例如相同的词但计数不同(比如 1 和 2)。
我想你的意思是,同一个词出现在 matrix
的多行中,然后每行出现都算作 +1
。
如果我运行这个例子:
matrix =[['a', 'b', 'b', 'a'],
['a', 'b', 'b', 'a', 'a', 'b', 'b', 'a'],
['e', 'f', 'g'],
['e', 'f', 'e', 'a', 'b', 'b', 'a', 'a', 'b', 'b', 'a', 'h']]
words = ['abba']
result = right(words, matrix)
result
用post中给出的代码我明白了
>>> result
[('abba', 1), ('abba', 2)]
而您想要的听起来是:[('abba', 2)]
。
这里我会保留一个字典,其中包含单词及其在行中出现的频率,并在最后转换为元组列表,假设您需要来自问题的那种格式的结果。
def right(words, matrix):
word_occur = dict()
one_word = [''.join(row) for row in matrix]
for word in words:
if word in one_word:
word_occur[word] = word_occur.get(word,0) + 1
return [item for item in word_occur.items()]
在我给出的例子中给出了
[('abba', 3)]
计算第 1、2、4 行。对于评论中提供的示例,它给出:
[('app', 2), ('nner', 1)]
这听起来像你想要的。
我需要构建一个函数来从字母矩阵中的列表中搜索单词, 如果一个词存在,该函数将 return 元组列表与矩阵中的词。在每个元组中有一个单词和它在矩阵中出现的次数。(单词,数字) 我卡住了,我想得到帮助。
def right(word_list, matrix):
sum_lst = []
one_word = [''.join(row) for row in matrix]
for word in word_list:
for string in one_word:
print(string)
count =string.count(word)
if word in string:
if (word,count) not in sum_lst:
sum_lst.append((word, count))
return sum_lst
这让我想起了一个事实,即一个词出现了一次,即使它实际上出现了不止一次。
It brings me back to the fact that a word appears once even if it actually appears more than once.
如果不同,posted 代码将抓取字数,例如相同的词但计数不同(比如 1 和 2)。
我想你的意思是,同一个词出现在 matrix
的多行中,然后每行出现都算作 +1
。
如果我运行这个例子:
matrix =[['a', 'b', 'b', 'a'],
['a', 'b', 'b', 'a', 'a', 'b', 'b', 'a'],
['e', 'f', 'g'],
['e', 'f', 'e', 'a', 'b', 'b', 'a', 'a', 'b', 'b', 'a', 'h']]
words = ['abba']
result = right(words, matrix)
result
用post中给出的代码我明白了
>>> result
[('abba', 1), ('abba', 2)]
而您想要的听起来是:[('abba', 2)]
。
这里我会保留一个字典,其中包含单词及其在行中出现的频率,并在最后转换为元组列表,假设您需要来自问题的那种格式的结果。
def right(words, matrix):
word_occur = dict()
one_word = [''.join(row) for row in matrix]
for word in words:
if word in one_word:
word_occur[word] = word_occur.get(word,0) + 1
return [item for item in word_occur.items()]
在我给出的例子中给出了
[('abba', 3)]
计算第 1、2、4 行。对于评论中提供的示例,它给出:
[('app', 2), ('nner', 1)]
这听起来像你想要的。