【问题标题】:Traversing Multiple List within Multiple Dictionaries遍历多个字典中的多个列表
【发布时间】:2019-06-04 06:06:16
【问题描述】:

好的,我知道有几个类似的问题,但没有运气。我所拥有的是 (2) for 循环,在内部 for 循环中带有一个 while 语句和 2 个以列表为值的字典。我希望完成的是获取一个新键并进行一些计算,进入第二个循环,计算第二个字典值列表中的项目数,使用第一个循环中的信息循环遍历这些列表值以执行一些计算,一旦所有值都有已读取该键中断回到第一个循环获取下一个键,依此类推。每个字典的键数总是相等的。 seconddict 的 v 长度会有所不同,例如第一次通过第二个 for 循环,counterlist[1] 值应该是 9,但如下面的结果所示,它只计算 4,这是第一个 for 中的值的数量环形。实际上,第二个 For 循环每次只计算 4,而不是 v 的真实长度值。如果我在第二个 for 循环中包含键,例如 for k,v 在 seconddict.items() 中,它确实计数正确,但是后来我遇到了问题,在每个进入第二个 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======

【问题讨论】:

    标签: list dictionary for-loop while-loop


    【解决方案1】:

    好吧,再看几眼之后,我正在使用我在另一段代码中使用的计数器列表。通过将其更改为以下内容,我能够使其工作。这对于在字典中使用列表作为键值对来计算每个值的数量的其他人可能很有用。

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

    【讨论】:

      猜你喜欢
      • 2017-05-23
      • 1970-01-01
      • 1970-01-01
      • 2019-10-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-14
      • 2021-02-05
      • 1970-01-01
      相关资源
      最近更新 更多