删除字典项目

时间:2017-05-21 00:54:36

标签: 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 removeKey(d, 'Red')

这会打印包括' Red'在内的所有内容。我做错了什么?

2 个答案:

答案 0 :(得分:2)

您的代码实际上永远不会删除密钥 - 相反,如果密钥不是要删除的密钥,它只是就地更新原始字典;但是,它没有对要删除的密钥做任何事情。

一种选择是创建一个新词典:

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}

答案 1 :(得分:1)

您可以使用dict模块对copy进行深层复制,以免修改原始dict,并pop复制dict中的密钥:< / p>

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}