问题描述
再说一次,我是 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 (将#修改为@)