Как настроить обработку итерации в словаре Python? - PullRequest
0 голосов
/ 09 марта 2011

Предположим, что у нас есть диктант:

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

Я бы хотел запустить цикл for, если это возможно, например:

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

, чтобы напечатать следующее значение словаря,для последнего я хочу напечатать первый.Цель состоит в том, чтобы каждая диктаторная пара печатала (соединялась) с другой парой без какой-либо пары, создавая цикл (связывая друг с другом).

Ответы [ 3 ]

3 голосов
/ 09 марта 2011

Я думаю, вы просите что-то вроде следующего:

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 голосов
/ 09 марта 2011
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

".... Лучше всего рассматривать словарь как неупорядоченный набор ключей: ..."

0 голосов
/ 09 марта 2011

Вы можете получить все ключи с помощью 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 содержит текущую позицию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...