Priority Queues in Python

2018-05-31 00:22:59 +08:00
 lbfeng
from queue import PriorityQueue

q = PriorityQueue()

q.put((2, 'code'))
q.put((1, 'eat'))
q.put((3, 'sleep'))
q.put((4, 'play'))

while not q.empty():
    next_item = q.get()
    print(next_item)

# Result:
#   (1, 'eat')
#   (2, 'code')
#   (3, 'sleep')
#   (4, 'play')

python 好像没有 buildin 的方法能把(3, 'sleep')改成(1, 'sleep') 有没什么好的方法可供参考。

1262 次点击
所在节点    问与答
5 条回复
jedihy
2018-05-31 00:58:10 +08:00
PQ 没有修改操作的,这个是数据结构的问题
caviar
2018-05-31 08:10:15 +08:00
heap 没有修改操作,需要在 PQ 里修改的话可以考虑用 Fibonacci heap 实现的 PQ
lbfeng
2018-06-01 01:43:00 +08:00
@jedihy @caviar 还是可以的。q.queue 返回一个 list `[(1, 'eat'), (2, 'code'), (3, 'sleep'), (4, 'play')]` 直接改 list 里的 priorityqueue 里的值也会变。
lbfeng
2018-06-01 09:18:44 +08:00
@caviar @jedihy 我搞错了。
jedihy
2018-06-01 09:27:38 +08:00
@lbfeng 是有 hack 可以修改的,只是违背初衷了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/459077

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX