阅读背景:

python优先级队列

来源:互联网 
class PriorityQueue: data = dict() def __init__(self): pass ''' 入队:如果对象没有优先等级,则添加到队尾,如果对空,则默认等级为1 如果对象有优先等级,如果有同等级的则添加到对应等级末尾 ''' def push(self,obj,key=None): if(key==None): if(self.data.keys()): maxKey = max(self.data.keys()) self.data[maxKey].append(obj) else: self.push(obj, 1) return else: if (key not in self.data.keys()): self.data[key] = [] self.data[key].append(obj) print("key: ", key, " obj :", obj) ''' 按优先级出队,并从队内移除 ''' def pop(self): if(self.data): minKey = min(self.data.keys()) # print("minKey :", minKey) obj = self.data[minKey].pop(0) # print("obj :" ,obj) if (len(self.data[minKey]) < 1): #self.items.popitem(minKey) del self.data[minKey] return obj else: print("Empty Queue") return def isempty(self): return self.data def size(self): count=0 for item in self.data: count+=len(self.data[item]) return count def __str__(self): tmp="PriorityQueue:\n" for key,value in self.data.items(): tmp+="level :\t"+str(key)+"\t object :\t"+str(value)+"\n" return tmp 实例化对象,数据入队 p=PriorityQueue() p.push("level: none") p.push("level:4",4) p.push("level:1-0",1) p.push("level:1-1",1) p.push("level:0",0) class PriorityQueue: data = dict() def __init__(s



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: