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