根据Python中的字符串值从字典中删除键

jov*_*cbg 1 python dictionary key python-2.7

为什么这不起作用:我在字典里面有一本字典

{'rrr-rrr/CCC-3/FFFF-1': {'ActiveSet': '0'},
'rrr-rrr/CCC-4/FFFF-1': {'ActiveSet': '1'},
...}
Run Code Online (Sandbox Code Playgroud)

我需要丢弃CCC为3(CCC-3)的密钥.我试过的方式是这样的:

my_dict = {k: v 
           for k, v in my_dict.iteritems() 
           if k.split('/')[1].split('-')[1]!= 3
           }
Run Code Online (Sandbox Code Playgroud)

并且此代码没有错误,但没有任何反应.我也试过在CCC号码的内部字典中创建新键,但这也不行.期望的输出:

{'rrr-rrr/CCC-4/FFFF-1': {'ActiveSet': '1'},
    ...}
Run Code Online (Sandbox Code Playgroud)

cs9*_*s95 6

正如Jon Clements所提到的,您将字符串与整数进行比较,因此您的if条件永远不会评估为真.

作为修复,我会更喜欢:

val = 3
my_dict = {k : v 
           for k, v in my_dict.iteritems() 
           if 'CCC-{}'.format(val) not in k
         }
Run Code Online (Sandbox Code Playgroud)

这样,您就不必对拆分和索引进行硬编码.请注意,如果您的表格CCC-<number>中的数字是两位或更多位数的键,您需要匹配CCC-{}/,正如Danil Speransky在他的回答中巧妙地观察到的那样.


需要注意的是蟒蛇3相当于dict.iteritemsdict.items.