如何解决Python:深度有限的FIFO——优化问题和回顾
再说一次,我是 Python 的新手。我需要一个深度有限的 FIFO。 F.e 深度是 5000,所以在添加 5000 个和更多项目之后,第一个应该被删除以保持其深度为 5000。有时我需要阅读“第一个”,有时需要阅读“最后一个”。如果我读了第一个,那么它应该被删除。
# class
class DictionaryDeque:
from collections import OrderedDict
def __init__(self,dequeDict=10):
self._stack = OrderedDict()
self._range = dictRange
self.setRange(dictRange)
self._len = 0
def len(self):
self._len = len(self._stack)
return self._len
def getRange(self):
return self._range
def setRange(self,range):
self._range = range
# change the dict range if the dict has more items
self.do_pop()
def add(self,key,value):
self._stack[key] = value
self.len()
self.do_pop()
def stack(self):
if self._len > 0:
self.do_pop()
return self._stack
else:
return ""
def last(self):
self.do_pop()
if self._len > 0:
return list(self._stack)[-1]
else:
return list(self._stack)[0]
def first(self):
self.do_pop()
return list(self._stack)[0]
def do_pop(self):
while self.len() > self._range:
self._stack.popitem(last=False)
self.len()
# end of class
dequeDict = DictionaryDeque(30)
for i in range (0,40):
Now = str(datetime.datetime.Now())
dequeDict.add(Now,i)
dequeDict.setRange(10)
print(dequeDict.len())
print(dequeDict.last())
print(dequeDict.first())
print(dequeDict.stack())
我必须实现“首次读取和删除”以及更多功能,但在开始之前,我很想知道这是否可行,还是应该有更好的方法?
有没有办法避免
中的列表部分list(self._stack)[0]
?
顺便说一句,这个班级的好名字是什么?
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。