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)
正如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.iteritems
是dict.items
.