Sim*_*hes 232 python python-2.7
除了给定的密钥存在之外,还有其他方法可以删除字典中的项目,除了:
if key in mydict:
del mydict[key]
Run Code Online (Sandbox Code Playgroud)
场景是我给了一组要从给定字典中删除的键,但我不确定它们是否都存在于字典中.以防我错过了更有效的解决方案.
Ade*_*taş 503
你可以使用: dict.pop
mydict.pop("key", None)
Run Code Online (Sandbox Code Playgroud)
请注意,如果键不在字典中None,KeyError则会引发第二个参数,即未给出.提供第二个参数可防止条件异常.
mgi*_*son 12
还有:
try:
del mydict[key]
except KeyError:
pass
Run Code Online (Sandbox Code Playgroud)
这只执行1次查找而不是2次.但是,except子句很昂贵,所以如果你最终经常点击except子句,这可能会比你已经拥有的效率低.
让我们叫keys您要删除的键的列表/迭代器。我会这样做:
keys_to_remove = set(keys).intersection(set(mydict.keys()))
for key in keys_to_remove:
del mydict[key]
Run Code Online (Sandbox Code Playgroud)
您可以预先计算所有受影响的项目并对其进行操作。
我更喜欢创建一个新字典,而不是对现有字典进行变异,因此我可能还会考虑以下问题:
keys_to_keep = set(mydict.keys()) - set(keys)
new_dict = {k: v for k, v in mydict.iteritems() if k in keys_to_keep}
Run Code Online (Sandbox Code Playgroud)
要么:
keys_to_keep = set(mydict.keys()) - set(keys)
new_dict = {k: mydict[k] for k in keys_to_keep}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
138071 次 |
| 最近记录: |