Python字典:删除所有以s开头的键
我有一个字典,里面的内容像这样:
dic = {'s_good': 23, 's_bad': 39, 'good_s': 34}
我想把所有以's_'开头的键都删除掉。
在这个例子中,前两个键会被删除。
有没有什么简单有效的方法可以做到这一点呢?
5 个回答
11
在使用Python 3时,为了避免出现错误:
RuntimeError: dictionary changed size during iteration
这样做应该就可以了:
list_keys = list(dic.keys())
for k in list_keys:
if k.startswith('s_'):
dic.pop(k)
25
for k in dic.keys():
if k.startswith('s_'):
del dic[k]
* 编辑 *
现在在 Python 3 中,经过原答案发布多年,keys()
方法返回的是字典的一个视图,这意味着你不能改变字典的大小。
一个非常优雅的解决办法是复制键:
for k in list(dic.keys()):
if k.startswith('s_'):
del dic[k]
23
这样做就可以了:
for k in dic.keys():
if k.startswith('s_'):
dic.pop(k)