我檢查了所有其他問(wèn)題,并發(fā)現(xiàn)了相同的錯(cuò)誤,但沒(méi)有找到有用的解決方案= /我有一個(gè)列表字典:d = {'a': [1], 'b': [1, 2], 'c': [], 'd':[]}其中某些值為空。創(chuàng)建這些列表結(jié)束時(shí),我想在返回字典之前刪除這些空列表。當(dāng)前,我正在嘗試執(zhí)行以下操作:for i in d: if not d[i]: d.pop(i)但是,這給了我運(yùn)行時(shí)錯(cuò)誤。我知道您無(wú)法在字典中進(jìn)行迭代時(shí)添加/刪除字典中的元素...那么解決這個(gè)問(wèn)題的方法是什么?
3 回答

皈依舞
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
在Python 2.x中,調(diào)用keys會(huì)生成密鑰的副本,您可以在修改時(shí)進(jìn)行迭代dict:
for i in d.keys():
請(qǐng)注意,這在Python 3.x中不起作用,因?yàn)樗黭eys返回迭代器而不是列表。
另一種方法是使用list強(qiáng)制復(fù)制密鑰。這個(gè)也可以在Python 3.x中使用:
for i in list(d):

慕姐4208626
TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
只需使用字典理解將相關(guān)項(xiàng)目復(fù)制到新字典中
>>> d
{'a': [1], 'c': [], 'b': [1, 2], 'd': []}
>>> d = { k : v for k,v in d.iteritems() if v}
>>> d
{'a': [1], 'b': [1, 2]}
添加回答
舉報(bào)
0/150
提交
取消