如何在不返回任何内容的情况下反转堆栈

时间:2014-09-29 00:14:31

标签: python

a={}#dictionary
b=0
while(stack.is_empty()==False):
    b=b+1
    a={b:stack.pop()} 
else:
    for i in range(b, 0, -1):
       stack.push(a[i])  

我认为这应该有用,但它没有, 引发了键错误和空堆栈错误

3 个答案:

答案 0 :(得分:1)

对于反转堆栈,您可以将堆栈视为列表并执行:

stack.reverse()

而不是弹出并推入备用堆栈。来自Python 2 documentation

  

在适当的位置反转列表的元素

>>> a = [66.25, 333, 333, 1, 1234.5]
>>> a.reverse()
>>> a
[333, 1234.5, 1, 333, -1, 66.25]

编辑:正如提问者所重述的那样,如果您想将堆栈转换为新堆栈,您可以执行以下操作:

def reverse_and_return(stack):
  newstack = []  # New list/stack
  for element in stack:
    newstack.insert(0, element)  # Push new element first
  return newstack

答案 1 :(得分:0)

a={b:stack.pop()} 

每次迭代都会用新词典替换a。要将键添加到现有字典,请执行

a[b] = stack.pop()

答案 2 :(得分:0)

如果我理解正确,请尝试

>>> {'b':[1, 2, 3, 4, 5][::-1]}
{'b': [5, 4, 3, 2, 1]} #list inside a dictionary are reversed