从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中的字典中删除键[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何从IOS中的字典数组中删除重复性? [关闭]

如果键存在则删除字典项[重复]

python中怎么重复打印

如何从字典中的列表中删除元素[重复]

从 Python 中的字符串中删除转义实体 [重复]

在python中的字典中切换键和值[重复]