当前位置: 首页 > 知识库问答 >
问题:

在Python中删除字典中的键[duplicate]

伯鸿达
2023-03-14

我想从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)]

共有3个答案

赵嘉纳
2023-03-14

您可以使用一个步长为2的范围,然后删除该范围中每个值的每个键。您还可以使用map,这是一个很棒的功能。

map(my_dict.pop, [2,4])

如果要捕获键不在字典中的错误,请使用lambda函数:

map(lambda x: my_dict.pop(x, None), [2,4])
姜德容
2023-03-14

以下是你如何做到到位的方法:

>>> 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'}
卫学真
2023-03-14

您可以使用听写理解,如下所示:

{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.
 类似资料:
  • 问题内容: 从字典中删除键时,我使用: 有没有一种方法可以做到这一点? 问题答案: 要删除键而不管它是否在字典中,请使用以下两个参数的形式: 如果典中存在,则返回,None否则返回。如果第二个参数未指定(即)并且key不存在,则引发a。 要删除肯定存在的密钥,你还可以使用 如果关键字在字典中不存在,则会引发 。

  • 从字典中删除键时,我使用: 有没有一个简单的方法可以做到这一点?

  • 问题内容: 为什么以下旨在删除字典中多个键的表达式无效?(是字典) 用它替换的最最小的表达式是什么? 问题答案: 您不应该 在 这里完全使用列表理解。列表推导非常适合构建值列表,因此不应将其用于一般循环。对副作用使用列表理解会浪费内存,这是对一个完美的列表对象的浪费。 列表推导也是 表达式 ,因此只能包含其他表达式。是一个语句,不能在表达式内使用。 只需使用一个循环: 或使用字典理解来重建字典:

  • 我有以下示例数据作为Python中的listobject。 我如何从这个列表中删除tour_url描述;或者我怎么能只保留名称和leagueid密钥。我试过很多种解决办法,但似乎都不起作用。 第二个问题:我如何过滤这个列表?与MySQL一样: 请对python像一个新人一样对待我,因为我真的是。

  • 问题内容: 有一个字典列表,我想删除具有相同键和值对的字典。 对于此列表: 我想退掉这个: 另一个例子: 对于此列表: 我想退掉这个: 问题答案: 尝试这个: 该策略是将字典列表转换为元组列表,其中元组包含字典项。由于可以对元组进行散列,因此你可以使用删除重复项set(在这里使用,这将是更老的python替代品,然后,使用来从元组中重新创建字典dict。 哪里: l 是原始清单 d 是列表中的词典

  • 问题内容: 如何从以下词典中删除 u 字符? 此数据来自 find() 查询 这样看起来 问题答案: 某些数据库(例如Sqlite3)允许您定义转换器和适配器函数,因此您可以将文本检索为 str 而不是 unicode 。不幸的是,MongoDB没有为任何常见的类型(例如str,decimal或datetime)提供此选项: http://api.mongodb.org/python/curren