为了账号安全,请及时绑定邮箱和手机立即绑定

Python 使用队列中最后添加的元素进行排序

Python 使用队列中最后添加的元素进行排序

陪伴而非守候 2021-08-14 15:43:49
实际上我的排序算法有效,但有一个问题。我有一个名为 SortedItem 的类,其中包括def __init__(self, point, cost):    self.coordinate = point    self.cost = cost我还有优先级队列,它按成本对这个 SortedItem 进行排序:class PriorityQueue:def __init__(self):    self.items = []def isEmpty(self):    return self.items == []def sortComparatorByCost(self, item):    return item.costdef enqueue(self, item):    self.items.append(item)    self.items.sort(key=self.sortComparatorByCost, reverse=True)def dequeue(self):    return self.items.pop()def returnQueueAsString(self):    queue_str = ""    for eachItem in self.items:        queue_str += str(eachItem) + " "    return queue_strdef isQueueContainsElement(self, element):    for eachElement in self.items:        if eachElement[0] == element:            return True    return False问题出现在这里: - 我已经定义了一些添加队列的顺序。假设我将此对象添加到队列中:obj1 = SortedItem((1,0), 10))queue.enqueue(obj1)obj2 = SortedItem((2,0), 15))queue.enqueue(obj2)obj3 = SortedItem((2,1), 15))queue.enqueue(obj3)现在我必须按照这个顺序从队列中获取对象(obj1、obj2、obj3)。然而python内置的sort函数是这样对这些对象进行排序的:(obj1, obj3, obj2)(因为obj2和obj3的开销是一样的)我该如何解决这个问题。我的意思是如果 2 个对象的成本相同,我应该得到第一个添加的对象。请注意:我刚刚创建了一个简单的问题示例。如果您尝试此代码,您可能会按以下顺序获得对象:obj1、obj2、obj3
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 227 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号