从Python中的字典中删除键[重复]
Posted
技术标签:
【中文标题】从Python中的字典中删除键[重复]【英文标题】:Removing keys from dictionary in Python [duplicate] 【发布时间】:2016-06-11 03:42:01 【问题描述】:我想从 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)]
【问题讨论】:
为什么是第二个循环?为什么不简单地del my_dict[number]
?
@njzk2 大概是因为密钥可能在也可能不在字典中。
@ffledgling 好点
【参考方案1】:
您可以使用 dict 理解,如下所示:
x:y for x,y in my_dict.items() if x not in my_keys
正如 e0k 和 njzk2 在 cmets 中所建议的,如果您愿意修改现有字典,则以下方法效果更好:
for key in my_keys:
try:
del my_dict[key]
except KeyError:
pass # Key wasn't in the dictionary at all.
【讨论】:
修改现有的dict
可能比创建一个新的更有效。
@e0k 当然,njzk2 在他的评论中已经建议了,无论如何我都会添加它。【参考方案2】:
下面是你如何做到这一点:
>>> 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'
【讨论】:
【参考方案3】:您可以使用步长为 2 的范围,然后删除范围中每个值的每个键。也可以使用map
,这个功能很棒。
map(my_dict.pop, [2,4])
如果您想捕获键不在字典中的错误,请使用 lambda 函数:
map(lambda x: my_dict.pop(x, None), [2,4])
【讨论】:
以上是关于从Python中的字典中删除键[重复]的主要内容,如果未能解决你的问题,请参考以下文章