Python 删除字典项

Python 删除字典项,python,dictionary,Python,Dictionary,我试图在不使用del的情况下删除一个项目,我有以下代码 d = {'Red': 1, 'Green': 2, 'Blue': 3} def removeKey(dicts, keys): for k,v in dicts.iteritems(): if k!= keys: dicts.update({k:v}) else: continue return dicts print removeK

我试图在不使用
del
的情况下删除一个项目,我有以下代码

d = {'Red': 1, 'Green': 2, 'Blue': 3} 

def removeKey(dicts, keys):
    for k,v in dicts.iteritems():
        if k!= keys:
            dicts.update({k:v})
        else:
            continue
    return dicts


print removeKey(d, 'Red')

这会打印所有内容,包括“红色”。我做错了什么?

您的代码实际上从未删除密钥–相反,如果密钥不是要删除的密钥,它只会更新原始字典;但是,它对要删除的键没有任何作用

一个选项是创建新词典:

def removeKey(dicts, keys):
    new_dict = {}
    for k,v in dicts.iteritems():
        if k != keys:
            new_dict[k] = v
    return new_dict
您也不需要
else:continue
,因为这是隐式的

您还可以使用字典理解来压缩此内容:

def removeKey(dicts, keys):
    return {k: v for k, v in dicts.iteritems() if k != keys}

您可以使用
copy
模块深入复制
dict
,以不修改原始
dict
,并从复制的
dict
中弹出
键:

from copy import deepcopy
d = {'Red': 1, 'Green': 2, 'Blue': 3}

def removeKey(d, key):
    d = deepcopy(d)
    d.pop(key, None)
    return d

print removeKey(d, 'Red')
# prints {'Green': 2, 'Blue': 3}

为什么不使用pop方法?您在dict上尝试过
pop
方法吗?是的,我尝试过,这会起作用。我正在尝试创建一个新的字典,其中包含除作为参数传递的键之外的所有其他键。使用deepcopy而不只是执行类似
d2=d.copy()
返回d2
?d.copy()的操作的任何原因执行浅复制,而深度复制(d)执行深度复制