我知道字典不是以这种方式使用的,因此没有内置函数来帮助实现这一点,但我需要删除字典中具有特定值的每个条目.
所以如果我的字典看起来像:
'NameofEntry1': '0'
'NameofEntry2': 'DNC'
...
Run Code Online (Sandbox Code Playgroud)
我需要删除(可能是pop)所有具有值DNC的条目,字典中有多个.
Ash*_*ary 16
修改原始字典:
for k,v in your_dic.items():
if v == 'DNC':
del your_dic[k]
Run Code Online (Sandbox Code Playgroud)
或者使用dict理解创建一个新的dict:
your_dic = {k:v for k,v in your_dic.items() if v != 'DNC'}
Run Code Online (Sandbox Code Playgroud)
从文档上iteritems(),iterkeys()和itervalues():
使用
iteritems(),iterkeys()或itervalues()同时添加或删除字典中的条目可能会产生一种RuntimeError或无法遍历所有条目.
同样适用于正常for key in dic:循环.
在Python 3这是适用于 dict.keys(),dict.values()和dict.items().
您只需要确保在迭代字典时没有修改字典,否则您会得到RuntimeError: dictionary changed size during iteration.
所以,你需要遍历键,值的副本(对于d使用d.items()在2.x或list(d.items())在3.X)
>>> d = {'NameofEntry1': '0', 'NameofEntry2': 'DNC'}
>>> for k,v in d.items():
... if v == 'DNC':
... del d[k]
...
>>> d
{'NameofEntry1': '0'}
Run Code Online (Sandbox Code Playgroud)