在矩阵中查找单词

时间:2018-11-18 05:53:15

标签: python matrix word

我有一个矩阵文件(python读取的内容像一个列表列表),我需要确定在给定方向上是否有另一个文件中的单词出现在该矩阵中。 例如:给定此矩阵:

c,a,T,e
o,a,t,s
w,o,t,e
n,o,l,e

单词:

caT, cow, own, cat

和说明:

downright (diagonal)

我希望输出:

cat:1

以及方向:

down, right

我希望:

cow:1
own:1
cat:1

我的功能设置如下:

def word_finder(word_list,matrix, directions):

我发现很难做的是浏览列表列表,然后遍历水平索引或对角线索引(( 寻求帮助

2 个答案:

答案 0 :(得分:0)

您的问题似乎已经有部分答案。尽管效率不高,但只需对方向进行一些简单的分析,您就可以轻松地将以下单独的解决方案链接在一起,以解决问题。

答案 1 :(得分:0)

尝试一下:

from itertools import chain
from collections import defaultdict

matrix= [['c', 'a', 'T', 'e'],
         ['o', 'a', 't', 's'],
         ['w', 'o', 't', 'e'],
         ['n', 'o', 'l', 'e']]
words = ['caT', 'cow', 'own', 'cat']

d = defaultdict(int)
for i in chain(matrix, list(zip(*matrix))): # list(zip(*matrix)) is for down direction
    for word in words:
        if word in ''.join(i):
            d[word] = d[word] + 1

d将是您的预期输出。 {'caT': 1, 'cow': 1, 'own': 1}