我正在使用列表理解来创建嵌套字典,以便网格中的每个单元格都有自己的字典副本称为stocklist ...
import copy
stocklist = {'a': 0, 'b': 0, 'c': 0}
stockgrid = [[copy.deepcopy(stocklist) for w in range(WIDTH)] for h in range(HEIGHT)]
现在,我将遍历网格的每个元素,并在每个单元格的字典中查找项目,以与另一个网格(键盘网格)的相应单元格中的值进行比较...
keygrid = [["key" for w in range(WIDTH)] for h in range(HEIGHT)]
所以这是我必须遍历每一行和每行的代码,并将keygrid中的内容与stocklists网格中匹配键的内容进行比较,如果匹配则添加1作为值。
for row in range(HEIGHT):
for col in range(WIDTH):
if stockgrid[row][col] == keygrid[row][col]:
stockgrid value of key in this cells dictionary = value + 1
上面的最后一行当然是纯伪的,我真的不知道语法应该怎么看,我需要[row] [col]位来告诉计算机我正在处理的stockgrid中的哪个单元 - 但是,如何告诉它+1匹配键的值?希望有道理。此外,可能有必要让“keygrid”还包含每个单元格中的字典或值列表,以便可以在stockgrid字典的相应单元格中匹配多个键,令人难以置信的是将会!任何建议真的很感激。
答案 0 :(得分:1)
我认为keygrid是某种矩阵,每个元素都是你正在制作副本的关键词,对吗?然后在stockgrid[row][col] == keygrid[row][col]
中你要做的是查看keygrid的键是否在stockgrid中,如果为true,则为该键值添加1。
如果是这样,你会问答案是:
for row in range(HEIGHT):
for col in range(WIDTH):
if keygrid[row][col] in stockgrid[row][col]:
stockgrid[row][col][keygrid[row][col]]+=1
如果在keygrid内部有一个键列表,你可以这样做:
for row in range(HEIGHT):
for col in range(WIDTH):
# Now we select the common keys between the stockgrid and the keygrid
common_keys=[key for key in keygrid[row][col] if key in stockgrid[row][col]]
# Add one in the common_keys
for key in common_keys:
stockgrid[row][col][key]+=1