Python3字典操作錯誤之遍歷查詢

2021-10-01 17:50:05 字數 747 閱讀 8847

昨天在leetcode上刷乙個題的時候遇到需要對字典的key進行遍歷查詢,結果出現如下錯誤:

runtimeerror: dictionary changed size during iteration

出錯的**段如下:

for j in ans.keys():  #遍歷模板ans字典

if (j not in ans_temp): #對於在後面沒有出現的元素進行刪除

del ans[j]

else: #對於在後面出現的元素,比較其出現次數的大小,將最小的value更新到模板ans字典中

if (ans.get(j) > ans_temp.get(j)):

ans[j] = ans_temp.get(j)

原因是在遍歷字典的過程中,對字典的元素進行了del操作,導致字典的size發生了變化,從而報錯。

修正方法為:將字典變為列表,去遍歷列表,而不是字典。**如下:

for j in list(ans.keys()):
為什麼要這麼做呢?

因為ans.keys()返回的是乙個迭代器(iteration),所以在遍歷中對其進行刪除操作時會觸發異常,但如果轉換成list,就沒有問題。

總結就是,遍歷刪除時,物件不要用迭代器。

完整**和題目,見github:

python3 字典操作

dictionary 字典 裝下整個世界 字典是python中的唯一的對映型別,採用鍵值對的形式儲存資料 key value python對key進行雜湊函式運算,根據計算結果決定value儲存的位址,所以字典是無序儲存的,且key必須是可雜湊的。可雜湊表示key必須是不可變型別,如 數字 字串 元...

Python3 字典操作

usr bin python coding utf 8 author zhaosj python 基礎字典 python的字典資料結構與現實中的字典類似,以鍵值對 key value 的形式表現出來 user info 注意 插入mongodb資料庫需要用字典資料結構 字典是另一種可變容器模型,且可...

python3字典遍歷 python3字典遍歷

python版本 python3.7 info infog.get name 得到字典info中name的值 info.keys 得到字典info中所有的鍵,結果是乙個物件 dict keys name age 需要注意在python2中該操作得到的是乙個列表 遍歷key for temp in i...