在字典中删除多个键

14 浏览
0 Comments

在字典中删除多个键

我有以下简单的Python代码:

# 字符串和整数的字典
wordFreqDic = {
    "Hanna": "blonde",
    "Brad" : "brown" ,
    "Peter" : "blonde",
    "Jason" : "brown"
}
# 如果键存在于字典中,则使用del删除它。
def answer():
    for i in wordFreqDic:
        if wordFreqDic[i]=="blonde":
            print("ok")
        else:
            del wordFreqDic[i]
    return wordFreqDic

我想删除值不为"blonde"的键,但代码存在以下问题:

1)程序出现错误:

RuntimeError: dictionary changed size during iteration

2)程序只删除了一个键,即输出为:

{'Brad': 'brown', 'Peter': 'blonde', 'Hanna': 'blonde'},在这种情况下,程序只删除了'Jason',但我还需要删除'Brad'

你知道为什么我的代码不能正常工作吗?

谢谢你的帮助。

0
0 Comments

删除字典中多个键的问题是在处理字典时遇到的常见问题之一。在Python中,可以使用字典推导式来解决这个问题。下面将介绍问题的原因以及解决方法。

问题原因:

当我们想要从字典中删除多个特定键时,传统的方式是使用循环遍历字典,并逐个删除键。然而,这种方法比较繁琐且效率较低。

解决方法:

为了更高效地删除多个键,可以使用字典推导式。字典推导式是一种快速创建新字典的方法,可以通过过滤原字典的键-值对来实现删除多个键的目的。

下面是使用字典推导式删除多个键的示例代码:

updated_dict = {k:v for k,v in wordFreqDic.items() if v != "blonde"}

在上述代码中,`wordFreqDic`是原始的字典,`"blonde"`是要删除的特定值。代码将通过过滤原字典的键-值对来创建一个新字典`updated_dict`,其中不包含值为`"blonde"`的键-值对。

通过使用字典推导式,我们可以更简洁地删除多个键,而不需要使用循环遍历字典的方式。这种方法可以提高代码的效率和可读性。

通过使用字典推导式,我们可以更高效地删除字典中的多个键。这种方法比传统的循环遍历方式更简洁、高效,并且提高了代码的可读性。

0