我可以在迭代 Python 字典时删除其中的项目吗?
我想从字典中删除不满足特定条件的元素,而不是创建一个全新的字典。以下是一个好的解决方案,还是有更好的方法?
for k, v in mydict.items():
if k == val:
del mydict[k]
直接在迭代字典时修改字典会导致 RuntimeError ,你也不应该这样做。解决方法是迭代字典副本或使用字典推导式。以下是两种方法:
1. 使用
dict.copy()
迭代字典的副本:
for k, v in mydict.copy().items():
if k == v:
del mydict[k]
这种方法你迭代的是原始字典的副本,并对原始字典进行修改。
2. 使用字典推导式创建新字典:
mydict = {k: v for k, v in mydict.items() if k != v}
这种方法你使用一个条件创建一个新字典,只包含满足条件的元素。这通常被认为是更 Pythonic 的方法,因为它更简洁高效。
这两种方法都能避免 RuntimeError 并达到你的目的。选择哪种方法取决于你的具体需求和编码风格。
标签:python,dictionary From: 5384914