gpt4 book ai didi

python-3.x - 是否可以使用 Python3 中的简单迭代删除满足某些条件的键?

转载 作者:行者123 更新时间:2023-12-04 02:37:45 25 4
gpt4 key购买 nike

假设我们有一个字典 d={"key1":-1,"key2":-2,"key3":3,"key4":0,"key5":-7,"key6":1,... 在 python3 中。现在我想删除值为负的键,例如"key1":-1"key2":-2等。我尝试编写这样的代码:

for k in d:
if d[k]<0:
del d[k]

但我收到错误提示“RuntimeError:字典在迭代过程中改变了大小”。从这条消息来看,似乎无法使用简单的迭代删除满足某些条件的字典的键,所以目前,我必须将要删除的键保存在列表中,然后再写一次迭代来删除它们来自 d。我的问题是:使用单次迭代真的不可能删除一些键吗?如果可能的话,您能否提供 Python3 的示例代码,该代码可以使用 Python3 中的简单迭代删除满足某些条件的 key ?谢谢。

最佳答案

方法#1:使用字典理解。这与其说是删除,不如说是替换,但会让你得到相同的 d

>>> d = {"key1":-1,"key2":-2,"key3":3,"key4":0,"key5":-7}
>>> d = {k: v for k,v in d.items() if v >= 0}
>>> d
{'key3': 3, 'key4': 0}

方法#2:迭代键的独立副本:

>>> d = {"key1":-1,"key2":-2,"key3":3,"key4":0,"key5":-7}
>>> for k in set(d):
... if d[k] < 0:
... del d[k]
...
>>> d
{'key3': 3, 'key4': 0}

关于python-3.x - 是否可以使用 Python3 中的简单迭代删除满足某些条件的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20534061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com