【问题标题】:How to custom handle iteration in python dictionary?如何在python字典中自定义处理迭代?
【发布时间】:2011-03-09 09:50:52
【问题描述】:

假设我们有一个字典:

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

如果可能的话,我想运行一个 for 循环:

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

打印字典的下一个值,对于最后一个我想打印第一个。 目的是每个字典对打印(连接)到另一对,而没有任何对连接创建一个循环(相互链接)。

【问题讨论】:

  • 我不明白你的最后一句话。你能提供一个预期输出的例子吗?

标签: python dictionary


【解决方案1】:

我认为您要求的是以下内容:

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

但请注意,字典未排序,因此您可以按任何顺序取回键。

【讨论】:

    【解决方案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
    

    ".... 最好将字典视为一组无序的键:..."

    【讨论】:

      【解决方案3】:

      您可以使用 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 包含当前位置。

      【讨论】:

        猜你喜欢
        • 2019-06-03
        • 2019-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-15
        • 1970-01-01
        • 2013-08-21
        • 1970-01-01
        相关资源
        最近更新 更多