2010-07-17 78 views
1

我已經做了一個字典,我把字典的鍵放在列表中。我的列表中包含這樣的內容:python問題的字典和堆棧

s = [((5, 4), 'South', 1), ((4, 5), 'West', 1)] 

我從這個字典:

child = dict((t[0], t[1]) for t in s) 

keys = child.keys() 
print keys 

輸出是:[(4, 5), (5, 4)]

現在我需要把(4,5)和(5 ,4)進入堆棧。我該怎麼辦?

我試過了,但是當我從堆棧彈出時,它給了我兩個元素在一起。 like stack.pop() - output is : [(4, 5), (5, 4)]。我想彈出一個接一個......(4,5),然後(5,4)

+0

你能澄清嗎?你在做什麼,你在做什麼,你認爲是錯的,你想做什麼? – eruciform 2010-07-17 22:35:18

+0

哪裏/什麼是堆棧? – 2010-07-17 22:40:56

+0

PLZ再次看到這個問題...我已經做出了改變 – Shilpa 2010-07-17 22:41:30

回答

0

我認爲用戶想要這樣的:

# python 
> stack = [(4, 5), (5, 4)] 
> stack.pop(0) 
(4,5) 
> stack.pop(0) 
(5,4) 

只是一個提醒,雖然,這是不一個適當的堆棧。這是一個正確的堆棧:

# python 
> stack=[] 
> stack.append((4,5))  
> stack.append((5,4)) 
> stack.pop() 
(5,4) 
> stack.pop() 
(4,5) 
+0

嘿,我寫了同樣的... – Quonux 2010-07-17 22:56:16

0

使用

element = stack[0] 
if len(stack) > 0: 
    stack = stack[1:] 

print element 

,但它不是那種堆棧的:/

+0

我需要適合堆棧的soln ....我需要使用pop n push – Shilpa 2010-07-17 22:46:34

+0

@ shilpa,推送和彈出列表*是一個合適的堆棧。推到底,流行消失。 – eruciform 2010-07-17 22:47:29

+0

它基本上是一樣的,你可以在自己的類中「包裝」這個並將它稱爲堆棧(使用你的函數名稱等) – Quonux 2010-07-17 22:51:10

2

您可以使用列表作爲堆棧:

stack = list(child.keys()) 
print stack.pop() 
print stack.pop() 

結果:

 
(5, 4) 
(4, 5) 

重要提示:字典的鍵不排序,從而如果你想要以特定的順序處理物品,你需要自己處理。例如,如果你想以正常的排序順序排列順序,你可以使用sorted。如果你希望他們在相反的順序,從他們在s的順序,你可以跳過轉換到詞典,只是去直接從s到你的棧中彈出:

stack = [x[0] for x in s] 
print stack.pop() 
print stack.pop() 

結果:

 
(4, 5) 
(5, 4) 
+0

+1提到字典鍵不是訂購。 – 2010-07-17 22:48:02