首页 > 解决方案 > 在矩阵中查找单词

问题描述

我有一个矩阵文件(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):

我发现很难做的是遍历列表列表并遍历例如水平或对角线的索引:( 谢谢帮助

标签: pythonmatrixword

解决方案


尝试这个:

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}


推荐阅读