为什么这行不通: 我有一本字典里面的字典
{'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 .
