为了账号安全,请及时绑定邮箱和手机立即绑定

删除具有特定值的字典键

删除具有特定值的字典键

慕桂英546537 2021-03-28 11:04:34
我知道字典并不是要用这种方式,因此没有内置函数可以帮助您做到这一点,但是我需要删除字典中具有特定值的每个条目。所以如果我的字典看起来像:'NameofEntry1': '0''NameofEntry2': 'DNC' ...我需要删除(可能弹出)所有具有值DNC的条目,字典中有多个条目。
查看完整描述

4 回答

?
开满天机

TA贡献1786条经验 获得超12个赞

修改原始字典:


for k,v in your_dict.items():

    if v == 'DNC':

       del your_dict[k]

或使用dict理解来创建新的dict:


your_dict = {k:v for k,v in your_dict.items() if v != 'DNC'}

从文档上iteritems(),iterkeys()和itervalues():


使用iteritems(),iterkeys()或itervalues()同时添加或删除字典中的条目可能会产生一种RuntimeError或无法遍历所有条目。


同样适用于普通for key in dict:循环。


在Python 3这是适用于 dict.keys(),dict.values()和dict.items()。


查看完整回答
反对 回复 2021-04-01
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

您只需要确保在迭代字典时没有修改字典,否则您会得到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'}


查看完整回答
反对 回复 2021-04-01
?
四季花海

TA贡献1811条经验 获得超5个赞

这应该工作:


for key, value in dic.items():

     if value == 'DNC':

         dic.pop(key)


查看完整回答
反对 回复 2021-04-01
  • 4 回答
  • 0 关注
  • 261 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信