从嵌套数据库检索数据深.copyPython列表理解词典

2024-09-28 15:23:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用列表理解创建一个嵌套字典,这样网格中的每个单元格都有自己的字典副本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字典的相应单元格中可以匹配多个键,这会是什么样的语法让人大吃一惊!谢谢你的建议。你知道吗


Tags: keyin网格列表for字典rangecol
1条回答
网友
1楼 · 发布于 2024-09-28 15:23:03

我认为keygrid是一种矩阵,其中每个元素都是你要复制的单词的一个键,对吗?然后在stockgrid[row][col] == keygrid[row][col]中,您要做的是查看keygrid的键是否在stockgrid中,如果是真的,则为该键值加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

相关问题 更多 >