Skip to main content
 首页 » 编程设计

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

2025年05月04日1452php

为什么这行不通: 我有一本字典里面的字典

{'rrr-rrr/CCC-3/FFFF-1': {'ActiveSet': '0'}, 
'rrr-rrr/CCC-4/FFFF-1': {'ActiveSet': '1'}, 
...} 

我需要删除 CCC 为 3 (CCC-3) 的 key 。 我试过的方法是这样的:

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

并且这段代码没有错误,但是什么也没有发生。我也尝试过根据该 CCC 编号在内部字典中创建新 key ,但这也不起作用。 期望的输出:

{'rrr-rrr/CCC-4/FFFF-1': {'ActiveSet': '1'}, 
    ...} 

请您参考如下方法:

作为乔恩·克莱门茨 mentioned ,您将字符串与整数进行比较,因此您的 if条件永远不会评估为真。

作为修复,我会选择更像的东西:

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

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


注意 python 3 相当于 dict.iteritems是dict.items .