2011-03-09 35 views
0

假設我們有一個詞典]:如何自定義處理python字典中的迭代?

links={"foo":"url1","bar":"url2","baz":"url3",} 

我會通過運行一個for循環一樣,如果它是可能的,如:

for link in links: 
    ... 
    print(next_dictinary_value) 

打印dictionaly的下一個值,最後一個我想要打印第一個。 目的是爲每個輔助對打印(連接)到另一對無任何對連接創建一個循環(相互連接)。

+0

我不明白你最後一句話。你能提供一個預期產出的例子嗎? – 2011-03-09 10:01:40

回答

3

我想你」重新要求如下內容:

keys = links.keys() 
n = len(keys) 
for i in range(n): 
    thisKey = keys[i] 
    nextKey = keys[(i + 1) % n] 
    nextValue = links[nextKey] 
    print thisKey, nextValue 

但請注意,字典沒有排序,因此您可以按任意順序取回密鑰。

-1

您可以通過keys = links.keys()獲取所有的密鑰。然後使用它們使用鍵遍歷字典。例如:

>>> links={"foo":"url1","bar":"url2","baz":"url3",} 
>>> k = links.keys() 
>>> for i in range(0, len(k)): 
...  print(links[ k[i] ]) 
... 
url3 
url1 
url2 

變量i包含當前位置。

2
links={"foo":"url1","bar":"url2","baz":"url3",} 
it = iter(links) 
for link in links: 
    print it.next() 

... baz 
... foo 
... bar 

但試試這個:

it = iter(links) 
it.next() 
for link in links: 
    try: 
     print it.next() 
    except StopIteration: 
     it = iter(links) 
     print it.next() 


... foo 
... bar 
... baz 

「......這是最好把字典作爲一個無序的關鍵:」 ......