Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中从字典中删除键_Python - Fatal编程技术网

在Python中从字典中删除键

在Python中从字典中删除键,python,Python,我想从Python字典中删除一些键。在列表中提供钥匙;到目前为止,我的代码是: my_keys = [2,4] my_dict = {1:"aaaa" , 2: "bbb", 3:"ccc", 4:"ddd" } for number in my_keys: for key, value in my_dict.items(): if key == number: del my_dict[(key)] 您可以使用听写理解,如下所示

我想从Python字典中删除一些键。在列表中提供钥匙;到目前为止,我的代码是:

my_keys = [2,4]
my_dict = {1:"aaaa" , 2: "bbb", 3:"ccc", 4:"ddd" }

for number in my_keys:
    for key, value in my_dict.items():
            if key == number:
                del my_dict[(key)]

您可以使用听写理解,如下所示:

{x:y for x,y in my_dict.items() if x not in my_keys}

正如e0k和njzk2在评论中所建议的那样,如果您愿意修改现有词典,以下方法效果更好:

for key in my_keys:
    try:
        del my_dict[key]
    except KeyError:
        pass # Key wasn't in the dictionary at all.

您可以使用听写理解,如下所示:

{x:y for x,y in my_dict.items() if x not in my_keys}

正如e0k和njzk2在评论中所建议的那样,如果您愿意修改现有词典,以下方法效果更好:

for key in my_keys:
    try:
        del my_dict[key]
    except KeyError:
        pass # Key wasn't in the dictionary at all.

以下是您如何在适当的位置执行此操作:

>>> my_keys = [2,4]
>>> my_dict = {1:"aaaa" , 2: "bbb", 3:"ccc", 4:"ddd" }
>>> for key in my_keys:
...     del my_dict[key]
... 
>>> my_dict
{1: 'aaaa', 3: 'ccc'}
旁注:要删除键并获取值,请使用
dict.pop

>>> x = my_dict.pop(1)
>>> x
'aaaa'
>>> my_dict
{3: 'ccc'}

以下是您如何在适当的位置执行此操作:

>>> my_keys = [2,4]
>>> my_dict = {1:"aaaa" , 2: "bbb", 3:"ccc", 4:"ddd" }
>>> for key in my_keys:
...     del my_dict[key]
... 
>>> my_dict
{1: 'aaaa', 3: 'ccc'}
旁注:要删除键并获取值,请使用
dict.pop

>>> x = my_dict.pop(1)
>>> x
'aaaa'
>>> my_dict
{3: 'ccc'}

可以使用步长为2的范围,然后删除该范围中每个值的每个键。您还可以使用
map
,这是一个很好的功能

map(my_dict.pop, [2,4])
如果您想捕获一个键不在字典中的错误,请使用lambda函数,如下所示:

map(lambda x: my_dict.pop(x, None), [2,4])

可以使用步长为2的范围,然后删除该范围中每个值的每个键。您还可以使用
map
,这是一个很好的功能

map(my_dict.pop, [2,4])
如果您想捕获一个键不在字典中的错误,请使用lambda函数,如下所示:

map(lambda x: my_dict.pop(x, None), [2,4])

为什么是第二个循环?为什么不干脆
del my_dict[number]
?@njzk2大概是因为键可能在字典中,也可能不在字典中。@ffling good point为什么是第二个循环?为什么不简单地
del my_dict[number]
?@njzk2大概是因为键可能在字典中,也可能不在字典中。@ffling good point修改现有的
dict
可能比创建一个新的更有效。@e0k毫无疑问,这已经是njzk2在他的评论中建议的,无论如何我都会添加它。修改现有的
dict
可能比创建一个新的更有效。@e0k当然,这已经是njzk2在他的评论中建议的,无论如何我都会添加它。