我正在使用列表理解来创建一个嵌套字典,这样网格中的每个单元格都有自己的字典副本,称为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中的内容与stocklist网格中匹配关键字的内容进行比较,如果匹配,则添加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字典的相应单元格中可以匹配多个键,这将是令人难以置信的语法!非常感谢任何建议。
我怀疑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