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])
我认为这应该有用,但它没有, 引发了键错误和空堆栈错误
答案 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