Delete a dictionary item if the key exists
本问题已经有最佳答案,请猛点这里访问。
只有在给定的键存在的情况下,才能删除字典中的项,除了:
1 2 | if key in mydict: del mydict[key] |
场景是,我得到一组要从给定字典中删除的键,但我不确定它们是否都存在于字典中。以防我错过一个更有效的解决方案。
您可以使用
1 | mydict.pop("key", None) |
请注意,如果没有给出第二个参数,即
还有:
1 2 3 4 | try: del mydict[key] except KeyError: pass |
这只执行1次查找,而不是2次查找。但是,
方法:计算要删除的键,改变dict
让我们调用
1 2 3 | keys_to_remove = set(keys).intersection(set(mydict.keys())) for key in keys_to_remove: del mydict[key] |
您预先计算所有受影响的项目并对其进行操作。
方法:计算要保存的密钥,用这些密钥生成新的dict我更喜欢创建一个新字典,而不是改变现有的字典,因此我可能还会考虑:
1 2 | keys_to_keep = set(mydict.keys()) - set(keys) new_dict = {k: v for k, v in mydict.iteritems() if k in keys_to_keep} |
或:
1 2 | keys_to_keep = set(mydict.keys()) - set(keys) new_dict = {k: mydict[k] for k in keys_to_keep} |