我正在使用Python队列:
q = Queue.Queue()
我使用q.put(item)
将某个类的对象放入上述队列中。但是,在将项目放入队列之前,我想检查它是否已存在于队列中。有没有办法做到这一点? [没有取出队列中的所有对象然后将它们全部推回]
此外:
我不知道我怎么能真正看到我放入队列的变量(调试时)。我正在使用Pydev,我在variables
窗口中看到的只有not_empty
和not_full
之类的东西。如何在运行时看到队列中的内容?
答案 0 :(得分:10)
您可以将'q.queue'视为列表。
if item in q.queue:
print("already there!")
答案 1 :(得分:1)
如果您愿意,可以为自己的班级提供此类机制。
class UniqueQueue:
def __init__(self):
self.__item_pool = []
def push(self, item):
if item not in self.__item_pool:
self.__item_pool.append(item)
def pop(self):
return self.__item_pool.pop()
答案 2 :(得分:1)
您确定需要queue.Queue
吗? queue.Queue
是一个同步集合,因此提供的功能比大多数情况下所需的功能更多。
您可能希望使用queue.deque
或使用this recipe来创建自己的OrderedSet
。
例如
q = queue.deque()
q.appendleft(1)
q.appendleft(2)
q.appendleft(3)
assert 2 in q
assert q.pop() == 1
在python 2中,queue
模块名为Queue
。