Python 通过仅指定键的一部分从字典中删除键

Python 通过仅指定键的一部分从字典中删除键,python,dictionary,Python,Dictionary,Python 3: 假设我有一本字典: d={aaa0:'Hello',aaa1:'how',bbb0:'are',bb1:'you'} 现在,如何删除密钥中包含“a”的所有密钥?我知道如何通过指定每个键然后删除来删除键 我想知道是否有任何“pythonic”方法通过只指定密钥的一部分来删除密钥。 比如: if d['contains a'] del[key] 差不多吧 预期产出: d={bbb0:'are',bb1:'you'} 词典理解对这一点起作用 d = {'aaa0':'Hell

Python 3:

假设我有一本字典:

d={aaa0:'Hello',aaa1:'how',bbb0:'are',bb1:'you'}
现在,如何删除密钥中包含“a”的所有密钥?我知道如何通过指定每个键然后删除来删除键

我想知道是否有任何“pythonic”方法通过只指定密钥的一部分来删除密钥。
比如:

if d['contains a'] del[key]
差不多吧

预期产出:

d={bbb0:'are',bb1:'you'}

词典理解对这一点起作用

d = {'aaa0':'Hello','aaa1':'how','bbb0':'are','bb1':'you'}

e = {k:v for k,v in d.iteritems() if 'a' not in k}

{'bb1': 'you', 'bbb0': 'are'}
编辑:这在Python 2.7中,用于创建新的dict:

>>> d = {"a1": "A0", "a1": "A1", "b1": "B1", "b2": "B2"}
>>> e = {k: v for k, v in d.items() if not "a" in k}
>>> e
{'b2': 'B2', 'b1': 'B1'}

由于要从dict中删除项目:

d = {"aaa0":'Hello',"aaa1":'how',"bbb0":'are',"bb1":'you'}
for k in list(d):
  if 'a' in k:
    del d[k]
print(d)
这将通过遍历当前dict的键来修改当前dict,而不会像其他答案所建议的那样创建新dict


编辑:此代码将在Python2和Python3中工作,无需修改。

d
在Python中无效。给我们看看你的真实代码。Python 2还是Python 3?@LutzHorn Python 3
AttributeError:“dict”对象没有属性“iteritems”
,至少在Python 3中没有。你可能在Python 3中,OP没有指定他使用的版本,所以我将使用免责声明进行编辑,但是在Python2中,items构建了一个元组列表并返回,因此如果它是一个大型字典,它可能会消耗大量内存。但是谁在2018年使用Python2?;)