簡體   English   中英

循環遍歷字典,但也在 Python 中更新它

[英]Loop over dictionary but also update it in Python

def keysorting(self):
        eing = dict()  #my dic1
        tarnod = dict() #mydic2
        if self.has_cycle():
            raise Exception('There is a cycle!')
        else:
            for node in self.nodes():
                eing[node] = self.indeg(node)
            for node in self.nodes():
                tarnod[node] = self.target_nodes(node)

        for key, value in eing.items():
                if value == 0:
                    lst.append(key)
                    del eing[key]
                self.update(key, tarnod, eing)




   def update(self, key, tarnod, eing):
        if key in tarnod.keys():
            for val in tarnod[key]:
                eing[val] -= 1
            del eing[key]
            return eing

我最大的問題是我想循環遍歷我正在更改的字典,因此我的代碼大部分時間都會生成一條錯誤消息,告訴我字典的大小在迭代期間發生了變化。 我希望你們能幫助我

好的,伙計們,這是我的問題更加具體,因為您要求如此之高:我的代碼必須如何結構化,以便我循環遍歷我的 dic1,然后更新它,然后循環遍歷更新的 dic1 並執行相同的操作這個更新的 dic

並且不要忘記:沒有不好的問題,只有不好的答案;-)

我最大的問題是我想循環遍歷我正在更改的字典,因此我的代碼大部分時間都會生成一條錯誤消息,告訴我字典的大小在迭代期間發生了變化。

通常,解決方案是循環遍歷您正在更改的內容的副本,例如:

for key, value in list(eing.items()):

list(eing.items())將產生一個過自己的生活並且不會受到影響的列表

del eing[key]

沒有人可以實現整個代碼,如果這個論壇中的任何人至少可以告訴我我剛剛為我的算法中的遞歸部分選擇的整體結構,我會真的很高興我完全理解如何實現代碼的每個部分(如何檢查該值是否為 0,如何將 append 放入列表等)但我不知道如何使它們作為一個整體協同工作,比如在我更新后如何循環瀏覽我的字典等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM