Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “PriorityQueue”是否尊重元组的顺序?_Python_Sorting_Priority Queue - Fatal编程技术网

Python “PriorityQueue”是否尊重元组的顺序?

Python “PriorityQueue”是否尊重元组的顺序?,python,sorting,priority-queue,Python,Sorting,Priority Queue,我需要用一些数据维护PriorityQueue。数据的顺序不是我希望在PriorityQueue中维护的顺序(两种不同的顺序有不同的用途)。事实上,我希望元素在队列中的顺序由三个函数决定: 1) 评分函数A 2) 评分函数B 3) 元素添加到队列的顺序 为了保持队列的有序性,我写了如下内容: import queue s = State(...) id = s.immutableID pq = queue.PriorityQueue() counter = 0 priority = (A(s)

我需要用一些数据维护PriorityQueue。数据的顺序不是我希望在PriorityQueue中维护的顺序(两种不同的顺序有不同的用途)。事实上,我希望元素在队列中的顺序由三个函数决定:

1) 评分函数A

2) 评分函数B

3) 元素添加到队列的顺序

为了保持队列的有序性,我写了如下内容:

import queue
s = State(...)
id = s.immutableID
pq = queue.PriorityQueue()
counter = 0

priority = (A(s), B(s), counter)

pq.put( (priority, id) )
counter += 1
这显示了试图获取PriorityQueue以维持我想要的顺序背后的粗略策略。在后面的代码中,我创建了几个新的
状态实例
,为它们的优先级打分,递增计数器,然后循环

如果我这样做,它基本上会对元组使用“字典排序”吗?也就是说,PriorityQueue是否会确定具有较早的第一坐标的所有元素最早插入,并且在连接中,具有较早的第二坐标的所有元素最早插入,依此类推


根据文档,我很确定答案是“是”,因为它使用了
sort
函数,
sort
使用
是,顺序将基于元组的排序,您称之为“字典排序”。根据网站上的文件

首先检索值最低的条目(值最低的条目是排序(列表(条目))[0])
返回的条目


排序,尤其是和,是保证的。

是的,顺序将基于元组的顺序,您称之为“字典排序”。根据网站上的文件

首先检索值最低的条目(值最低的条目是排序(列表(条目))[0])返回的条目

而分类,尤其是和,是保证的