iter.remove()目前是否在python dicts中实现了?
让我们说我需要删除集合/字典中大约一半的元素。然后我被迫:
或者:
渐渐地,一切都仍然是“O(n)”时间,与实际相关的理智方式相比,这是非常低效的,大约慢3倍:
至少在散列集的常见实现下,作为链表的桶,迭代器应该能够通过简单地删除链表中的节点来删除它刚访问的元素而不进行新的查找。
更重要的是,糟糕的解决方案还需要O(n)空间,即使对于那些倾向于在python中忽略这些优化问题的人来说也是如此。
答案 0 :(得分:0)
还有另一种方法:
for key in list(mydict.keys()):
val = mydict[key]
if <decide drop>(val):
mydict.pop(key)
可以解释为:
我怀疑与简单的迭代相比,invidual查找的开销会过高。但是,我很好奇(还没有测试过)。