在python中从字典中删除键

Removing keys from dictionary in Python

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
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)]


你可以使用听写理解,比如:

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

正如e0k和njzk2在评论中所建议的,如果您愿意修改现有的字典,那么下面的工作会更好:

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


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

1
map(my_dict.pop, [2,4])

如果您想捕捉一个键不在字典中的错误,可以使用lambda函数,这样:

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


以下是您的方法:

1
2
3
4
5
6
7
>>> 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

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