仅当给定键存在时,是否有任何其他方法可以删除字典中的项目,除了:
if key in mydict:
del mydict[key]
场景是我得到了一组要从给定字典中删除的键,但我不确定它们是否都存在于字典中。以防万一我错过了更有效的解决方案。
仅当给定键存在时,是否有任何其他方法可以删除字典中的项目,除了:
if key in mydict:
del mydict[key]
场景是我得到了一组要从给定字典中删除的键,但我不确定它们是否都存在于字典中。以防万一我错过了更有效的解决方案。
还有:
try:
del mydict[key]
except KeyError:
pass
这只进行 1 次查找而不是 2 次。但是,except
子句很昂贵,因此如果您最终经常遇到 except 子句,这可能会比您已经拥有的效率低。
让我们调用keys
您要删除的键的列表/迭代器。我会这样做:
keys_to_remove = set(keys).intersection(set(mydict.keys()))
for key in keys_to_remove:
del mydict[key]
您预先计算所有受影响的项目并对其进行操作。
我更喜欢创建一个新字典而不是改变现有字典,所以我可能也会考虑这个:
keys_to_keep = set(mydict.keys()) - set(keys)
new_dict = {k: v for k, v in mydict.iteritems() if k in keys_to_keep}
或者:
keys_to_keep = set(mydict.keys()) - set(keys)
new_dict = {k: mydict[k] for k in keys_to_keep}