【问题标题】:Why do I have to instantiate a python deque of namedtuples as a list?为什么我必须将命名元组的 python 双端队列实例化为列表?
【发布时间】:2018-06-11 08:43:48
【问题描述】:

我有一个节点队列,我需要为它们设置一个上限和下限,所以我有一个名为 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')))

【问题讨论】:

标签: python namedtuple python-collections


【解决方案1】:

deque 的输入是 iterable,因此任何可迭代的数据结构都足够:list、tuple、set、dict 等。

或者,您可以使用 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))

希望这会有所帮助:-)

【讨论】:

    猜你喜欢
    • 2020-04-19
    • 2020-11-08
    • 1970-01-01
    • 2015-12-29
    • 2017-09-12
    • 1970-01-01
    • 2012-11-05
    • 2013-04-20
    • 2011-08-12
    相关资源
    最近更新 更多