如何在python字典中自定义处理迭代?

时间:2011-03-09 09:50:53

标签: python dictionary

假设我们有一个dictinary:

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

我希望通过运行一个for循环,如果可能的话:

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

打印下一个dictionaly值,为我想要打印的第一个值。 目的是每个dictinary对打印(连接)到另一对,没有任何对连接创建一个循环(相互链接)。

3 个答案:

答案 0 :(得分: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 :(得分: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

“....最好将字典视为一组无序的密钥:......”

答案 2 :(得分:-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包含当前位置。