我試圖從字典中刪除項目,如果該項的值低於某個閾值。舉個簡單的例子,我的意思:使用for循環刪除字典中的項目
my_dict = {'blue': 1, 'red': 2, 'yellow': 3, 'green': 4}
for color in my_dict:
threshold_value = 3
if my_dict[color] < threshold_value:
del my_dict[color]
print(my_dict)
現在,我得到一個RuntimeError: dictionary changed size during iteration
錯誤。那裏沒有什麼大的驚喜。我張貼了這個問題的原因是:
找出是否有一個優雅的解決方案,不需要創建一個新的字典(只保存鍵與值> =閾值)。
試着理解Python的基本原理。我自己讀到的方式是:「轉到第一個鍵,鍵是< x的值嗎?如果是 - 刪除此鍵:值項,並繼續處理字典中的下一個鍵,如果不是 - 繼續下一把鑰匙而不做任何事「。換句話說,歷史上發生在前一個鍵上的事情不應該影響我下一步去的地方。我期待着下一個項目,不管過去。 我知道這很有趣(有人可能會說愚蠢的,我會給你的),但是Python對這個循環的「思考方式」是什麼?爲什麼它不起作用? Python如何將它自己大聲讀出來?只是試圖更好地理解語言......
正如我在OP所說,我不想創建一個新的字典。 – Optimesh
你問了一個優雅的方式。但是你可以編程任何你喜歡的東西。 – Daniel