gpt4 book ai didi

python - 这是删除字典中对象的正确方法吗

转载 作者:行者123 更新时间:2023-11-28 22:01:15 26 4
gpt4 key购买 nike

我写了一个继承自dict的类,我写了一个成员方法来移除对象。

class RoleCOList(dict):
def __init__(self):
dict.__init__(self)

def recyle(self):
'''
remove roles too long no access
'''
checkTime = time.time()-60*30
l = [k for k,v in self.items() if v.lastAccess>checkTime]
for x in l:
self.pop(x)

是不是效率太低了?我使用了 2 个列表循环,但我找不到其他方法

最佳答案

在去年的 SciPy session 上,我参加了一个演讲,演讲者说 any()all() 是循环执行任务的快速方法.这说得通; for 循环在每次迭代时重新绑定(bind)循环变量,而 any()all() 只是使用该值。

很明显,当您想要运行一个总是返回假值(例如None)的函数时,您可以使用any()。这样,整个循环就会运行到最后。

checkTime = time.time() - 60*30

# use any() as a fast way to run a loop
# The .__delitem__() method always returns `None`, so this runs the whole loop
lst = [k for k in self.keys() if self[k].lastAccess > checkTime]
any(self.__delitem__(k) for k in lst)

关于python - 这是删除字典中对象的正确方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13282184/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com