我想从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字典中删除一些键。密钥在列表中提供;到目前为止我的代码:从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.
修改现有的'dict'可能比创建一个新的更有效。 – e0k
@ e0k肯定的,这是njzk2在他的评论中已经提出的,我会加入它。 – ffledgling
这里是你如何在地方做到这一点:
>>> 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])
为什么第二次循环?为什么不简单地'del my_dict [数字]'? – njzk2
@ njzk2可能是因为密钥可能在字典中,也可能不在字典中。 – ffledgling
@ffledgling好点 – njzk2