Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 什么样的类模式或包实现了带有倒计时键的dict?_Python_Dictionary_Ttl - Fatal编程技术网

Python 什么样的类模式或包实现了带有倒计时键的dict?

Python 什么样的类模式或包实现了带有倒计时键的dict?,python,dictionary,ttl,Python,Dictionary,Ttl,我正在寻找一个类似字典的对象,其中每个键都有一个ttl(或倒计时),每次调用.pop()时,ttl都会递减。当计数器点击0.pop()时,实际上会将其删除。类似于网络数据包的生存时间,以跳数而不是秒来衡量 我猜这样的东西是存在的,但我不知道它的名字 >d=X();d、 设置('k','v',ttl=2);d、 设置('k2','v2',ttl=7) >>>d.pop('k') (1,‘v’) >>>d.pop('k') (0,'v') >>>d.pop('k') ... KeyError:'k'

我正在寻找一个类似字典的对象,其中每个键都有一个ttl(或倒计时),每次调用
.pop()
时,ttl都会递减。当计数器点击0
.pop()
时,实际上会将其删除。类似于网络数据包的生存时间,以跳数而不是秒来衡量

我猜这样的东西是存在的,但我不知道它的名字

>d=X();d、 设置('k','v',ttl=2);d、 设置('k2','v2',ttl=7)
>>>d.pop('k')
(1,‘v’)
>>>d.pop('k')
(0,'v')
>>>d.pop('k')
...
KeyError:'k'
>>>d.pop('k2')
(6,'v2')

我要重新发明什么轮子?

看起来像是映射到迭代器的字符串键。请您把问题说清楚一点好吗?您是想通过字典倒计时ttl,还是要跟踪不同键的多个ttl值?请尝试在此处实现。不清楚您希望如何强制执行ttl(我假设您的意思是以秒或其他形式)。我不认为标准库中有任何明显的东西,特别是如果您希望对死对象进行垃圾收集(使用WeakReference会有所帮助,但您还有一些工作要做)。最简单的方法是使用扩展字典的时钟创建一个类。您可能只需要覆盖pop——在这里您将检查TTL>时钟,如果是,则引发错误(并可能在您处理时删除)。我不是指秒内的TTL,我是指网络上对pop类跃点的调用中的TTL。每次转发数据包时,TTL都会减小。当TTL为零时,数据包将被丢弃。看起来像是映射到迭代器的字符串键。请您更清楚地说明您的问题,好吗?您是想通过字典倒计时ttl,还是要跟踪不同键的多个ttl值?请尝试在此处实现。不清楚您希望如何强制执行ttl(我假设您的意思是以秒或其他形式)。我不认为标准库中有任何明显的东西,特别是如果您希望对死对象进行垃圾收集(使用WeakReference会有所帮助,但您还有一些工作要做)。最简单的方法是使用扩展字典的时钟创建一个类。您可能只需要覆盖pop——在这里您将检查TTL>时钟,如果是,则引发错误(并可能在您处理时删除)。我不是指秒内的TTL,我是指网络上对pop类跃点的调用中的TTL。每次转发数据包时,TTL都会减小。当TTL达到零时,数据包被丢弃。