我有一個dictionary的姓名和電話號碼; 在哪里names are keys和numbers are the values在dictionary. 我正在減少每個鍵的數字,在某些時候數字會達到 0。
當它們達到 0 時,我想從字典中洗掉相應的鍵。在我的代碼中,當我嘗試這樣做時 - 我收到一個錯誤,因為當我遍歷字典搜索以0 為值的鍵時,pop()它們來自dictionary- 我收到一個錯誤,說字典的大小在迭代程序中發生了變化.
如何在沒有錯誤的情況下實作上述目標?我在遍歷字典以洗掉值為 0 的鍵時錯了嗎?- 我理解這個問題并同意這是一個問題,但似乎想不出實作這一目標的方法!
我是否需要初始化一個陣列/集合來存盤值為 0 的鍵,然后洗掉它們? - 還是有更有效的方法?
pat = dict()
pat['ff']= 5
pat['dd'] = 4
pat['pat'] = 0
for i in pat:
if pat[i] == 0:
pat.pop(i)
Error: RuntimeError: dictionary changed size during iteration
uj5u.com熱心網友回復:
下面的代碼給出了預期的輸出
my_dict = {'a': 4, 'b':3, 'c':2, 'd':0}
del_keys= []
for key, value in my_dict.items():
if value == 0:
del_keys.append(key)
for key in del_keys:
my_dict.pop(key)
print(my_dict)
uj5u.com熱心網友回復:
list(d.keys())迭代時使用
d = {"a":1,"b":2,"c":3}
for i in list(d.keys()): #Use like this
d[i] -= 1
if d[i] ==0:
del d[i]
uj5u.com熱心網友回復:
有很多可能,但是想點python的Counter。洗掉歸零元素就像
my_counter = Counter()
你可以用減法從值中減去
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/390233.html
上一篇:1.8 字典的運算
