![](/img/trans.png)
[英]Given a list of dictionaries, how can I find how many dictionaries each key appears in?
[英]How can I find whether every string appears in the given list or not?
所以我得到了一个这样的列表s = ['.GGGGR','RGGRRG','RR...R','GR.GG.','.G.RRG','R.GGRG']
我我应该让我的主要 function contains_R(grid)
返回 R 如果 R 连续出现四次,如 RRGGGG 或 G 连续出现四次,如 RRGGGG 或 G。
这是我的代码:
def portillo(board2):
s = []
for i in board2:
s.append(list(i))
return s
def rows(grid):
r = list()
for row in portillo(grid):
r.append("".join(row))
return r
def columns(grid):
e = ''
results = []
for j in range(len(grid)):
for i in range(len(grid)):
e = e+grid[i][j]
results.append(e)
e = ''
return results
def diagonal1(grid):
grid = portillo(grid)
results = []
for i in range(len(grid)):
tmp1=""
tmp2=""
for j in range(0,len(grid)-i):
tmp1+=grid[i+j][j]
tmp2+=grid[j][i+j]
results.append(tmp1)
results.append(tmp2)
return list(results)
print(diagonal1(['GRRG','.GGR','GRGR','RGRG']))
def diagonal2(grid):
results = []
n=len(grid)
for i in range(n):
tmp1=""
tmp2=""
for j in range(i+1):
tmp1+=grid[i-j][j]
tmp2+=grid[n-1-j][n-1-i+j]
results.append(tmp1)
results.append(tmp2)
return list(results)
def contains_R(grid):
if 'RRRR' in diagonal1(grid):
return 'R'
if 'RRRR' in diagonal2(grid):
return 'R'
if 'RRRR' in rows(grid):
return 'R'
if 'RRRR' in columns(grid):
return 'R'
if 'GGGG' in diagonal1(grid):
return 'G'
if 'GGGG' in diagonal2(grid):
return 'G'
if 'GGGG' in rows(grid):
return 'G'
if 'GGGG' in columns(grid):
return 'G'
else:
return '-'
我的代码大部分时间都可以工作,但是当G 和 S 都出现时s = ['GGGG','.RGR','RRRR','RGRG']
时,output 返回R
而不是-
另一个问题是,当输入大于 4*4 板时,例如s = ['.GGGGR','RGGRRG','RR...R','GR.GG.','.G.RRG','R.GGRG']
,
即使G
在一行中明显出现了四次......代码返回'-'
而不是G
当我的输入是`
['.GSSSR',
'RGGRRG',
'RR.G.R',
'GR.GG.',
'.G.RRG',
'R.GGRG']`,
G
明显水平显示,但我的 output 返回-
....
顺便说一句,我的主要 function contains_R(grid)
有很多辅助函数,例如 rows(grid)、columns(grid)、diagonal1(grid)、diagonal2(grid) 等。
diagonal1(grid) returns every letter from top left horizontally to bottom right
diagonal2(grid) returns every letter from top right horizontally to bottom left
我应该改变什么,以便我的 output 适用于任何给定的输入?
对于您的问题:
s = ['GGGG','.RGR','RRRR','RGRG'] the output returns R instead of -
你的第三个如果:
if 'RRRR' in rows(grid):
return 'R'
rows 返回 ['GGGG', '.RGR', 'RRRR', 'RGRG'] 所以为什么它返回 R
为了:
Another issue is that when the input is bigger than a 4*4 board like s = ['.GGGGR','RGGRRG','RR...R','GR.GG.','.G.RRG','R.GGRG'],
rows returns ['.GGGGRRGGRRGRR...RGR.GG..G.RRGR.GGRG']
这就是它返回的原因 -
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.