在多个字典中遍历多个列表

时间:2019-01-09 12:51:18

标签: list dictionary for-loop while-loop

好吧,我知道有几个与此类似的问题,但是没有任何运气。我所拥有的是(2)for循环,在内部for循环内有一个while语句,还有2个字典,其中list作为值。我希望完成的工作是获得一个新密钥并进行一些计算,进入第二个循环,计算第二个字典值列表中的项目数,使用所有第一个循环中的信息使用第一个循环中的信息循环遍历这些列表值以执行一些计算读取该键后返回第一个循环,获取下一个键,依此类推。每个字典的键数将始终相等。 seconddict的v长度会有所不同,例如第一次通过第二个for循环,counterlist [1]的值应为9,但如下面的结果所示,它仅计数4,即第一个for的值数环。实际上,第二个For循环每次通过时仅计数4,而不是v的真实长度值。如果我在第二个for循环中包含键,例如在seconddict.items()中包括for k,v,则它确实计数正确,但是然后我遇到了一个问题,在第二个for循环的每个条目上,它都从第一个k开始,并且每次通过都复制我的所有结果。我可以就这项工作获得一些建议吗?

def opti(self, firstdict, seconddict):
    self.firstdict=firstdict
    self.seconddict=seconddict
    for key, value in self.firstdict.items():
        print('****NEW KEY AND DO OTHER STUFF****)
        for v in self.seconddict[key]:
            print(---INSDIE SECOND DICT---')
            x=0
            counterlist=[key, len(list(filter(None, v)))]
            while x < couterlist[1]:
                x+=1
                print(x)
                if x >= counterlist[1]:
                    if key in finaldict:
                        print('====SAVE HERE===')
                    else:
                        print('SOMETHING ELSE')
                    break
                else:
                    continue
        break   





 **CURRENT RESULTS:**
    *********************NEW RUN*******************
    *********NEW KEY***********  SIZE   4
    RAW DICT SIZE  4
    ------INSIDE RAWDICT---------   COUNTERLIST SIZE  3
    1
    2
    3
    ======SOMETHING ELSE======
    *********NEW KEY***********  SIZE   4
    RAW DICT SIZE  4
    ------INSIDE RAWDICT---------   COUNTERLIST SIZE  3
    1
    2
    3
    ======SOMETHING ELSE======
    *********NEW KEY***********  SIZE   4
    RAW DICT SIZE  4
    ------INSIDE RAWDICT---------   COUNTERLIST SIZE  3
    1
    2
    3
    ======SOMETHING ELSE======
    *********NEW KEY***********  SIZE   4
    RAW DICT SIZE  4
    ------INSIDE RAWDICT---------   COUNTERLIST SIZE  3
    1
    2
    3
    ======SOMETHING ELSE======

   **NEEDED RESULTS:**
    *********************NEW RUN*******************
    *********NEW KEY***********  SIZE   4
    RAW DICT SIZE  4
    ------INSIDE RAWDICT---------   COUNTERLIST SIZE  9
    1
    2
    3
    4
    5
    6
    7
    8
    ======SOMETHING ELSE======
    *********NEW KEY***********  SIZE   4
    RAW DICT SIZE  4
    ------INSIDE RAWDICT---------   COUNTERLIST SIZE  2
    1
    ======SOMETHING ELSE======
    *********NEW KEY***********  SIZE   4
    RAW DICT SIZE  4
    ------INSIDE RAWDICT---------   COUNTERLIST SIZE  5
    1
    2
    3
    4
    ======SOMETHING ELSE======
    *********NEW KEY***********  SIZE   4
    RAW DICT SIZE  4
    ------INSIDE RAWDICT---------   COUNTERLIST SIZE  3
    1
    2
    3
    ======SOMETHING ELSE======

1 个答案:

答案 0 :(得分:0)

再看一点之后,我就使用了我在另一代码段中一直使用的清单。通过将其更改为以下内容,我可以使其工作。这对于其他使用列表作为字典中的键值对来计算每个值内部数量的人可能有用。

length_dict = {key: len(v) for key, v in self.rawdict.items()}
            length_key = length_dict[key]
            counterlist=length_key