为什么我必须将namedtuples的python deque实例化为列表?

时间:2018-06-11 08:43:49

标签: python namedtuple python-collections

我有一个节点队列,我需要有一个上限和下限,所以我有一个名为QueueEntry的命名元组。

QueueEntry = collections.namedtuple('QueueEntry', ('node', 'lower', 'upper'))

当我在列表中实例化带有命名元组的双端队列时:

bfs_queue = collections.deque([QueueEntry(node, float('-inf'), float('inf'))])

而不是:

bfs_queue = collections.deque(QueueEntry(node, float('-inf'), float('inf')))

1 个答案:

答案 0 :(得分:0)

deque 的输入是iterable,因此任何可迭代的数据结构都足够:列表,元组,集合,字典等。

或者,您可以使用 append() appendleft()方法直接附加对象:

QueueEntry = collections.namedtuple('QueueEntry', ('node', 'lower', 'upper'))
bfs_queue = collections.deque()
bfs_queue.append(QueueEntry(node, float('-inf'), float('inf')))
bfs_queue.append(QueueEntry(another_node, 0, 0))

希望这会有所帮助:-)