在Python中从字典中删除键
我想从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)] 您可以使用听写理解,如下所示
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在他的评论中建议的,无论如何我都会添加它。