我遇到的問題,通過迭代和修改,字典...通過迭代和變異字典
說我有一本字典:
dict1 = {'A' : 'first', 'B' : 'second', 'C' : 'third', 'D' : 'fourth'}
我想通過dict1迭代,使用數據內建立第二個字典。在完成dict1
中的每個條目後,我將其刪除。
在僞代碼:
dict2 = {}
for an entry in dict1:
if key is A or B:
dict2[key] = dict1[key] # copy the dictionary entry
if key is C:
do this...
otherwise:
do something else...
del dict1[key]
我知道改變在一個循環中可迭代的長度引起的問題和上述可能不是簡單的實現。
對this question這個問題的回答似乎表明我可以使用keys()
函數,因爲它返回一個動態對象。因此,我已經試過:
for k in dict1.keys():
if k == A or k == B:
dict2[k] = dict1[k]
elif k == C:
dothis()
else:
dosomethingelse()
del dict1[k]
但是,這只是給:
'RuntimeError: dictionary changed size during iteration'
第一刪除後。我也嘗試使用iter(dict1.keys())
,但得到了同樣的錯誤。
因此,我有點困惑,可以做一些建議。謝謝
它似乎在循環結束時dict1將始終爲空。那麼當你完成循環時,你可以通過簡單地覆蓋dict1來解決問題嗎? – Jonas
http://stackoverflow.com/questions/12753351/removing-one-or-multiple-keys-from-a-dictionary http://stackoverflow.com/questions/8995611/removing-multiple-keys-from-a-字典安全 –
遍歷list(dict1.keys())'但是爲什麼你必須逐個刪除鍵?循環之後只需要'dict1.clear()'。 –