Python字典:删除所有以s开头的键

17 投票
5 回答
20365 浏览
提问于 2025-04-16 09:45

我有一个字典,里面的内容像这样:

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)

撰写回答