43

Итерация по словарям с использованием циклов 'for'

41

Я работаю с Python и наткнулся на интересный вопрос, связанный с итерацией по словарю. У меня есть следующий код:

d = {'x': 1, 'y': 2, 'z': 3}

for key in d:
    print(key, 'corresponds to', d[key])

В этом фрагменте кода используется цикл for, который итерирует по словарю d. Меня интересует, как Python понимает, что нужно лишь считать переменную key из словаря. Является ли key специальным ключевым словом, или это просто переменная, которую я сам объявил?

Буду признателен за разъяснение этого момента!

4 ответ(ов)

69

key — это просто имя переменной.

for key in d:

Этот цикл просто перебирает ключи в словаре, а не ключи и значения. Чтобы перебрать как ключи, так и значения, вы можете использовать следующий код:

Для Python 3.x:

for key, value in d.items():

Для Python 2.x:

for key, value in d.iteritems():

Чтобы убедиться в этом, поменяйте слово key на, например, poop.

В Python 3.x метод iteritems() был заменён на просто items(), который возвращает представление, похожее на множество, основанное на словаре. Это даже лучше, чем iteritems(). Этот метод также доступен в 2.7 как viewitems().

Операция items() будет работать и в Python 2, и в 3, но в 2 она возвращает список пар (ключ, значение), который не будет отражать изменения в словаре, происходящие после вызова items(). Если вы хотите поведение 2.x в 3.x, вы можете использовать list(d.items()).

1

key — это просто переменная.

Для Python 3.x:

>>> d = {'x': 1, 'y': 2, 'z': 3}
>>> for the_key, the_value in d.items():
...     print(the_key, 'соответствует', the_value)
...
x соответствует 1
y соответствует 2
z соответствует 3

Для Python 2.x:

>>> d = {'x': 1, 'y': 2, 'z': 3} 
>>> for my_var in d:
>>>     print my_var, 'соответствует', d[my_var]

x соответствует 1
y соответствует 2
z соответствует 3

... или лучше,

d = {'x': 1, 'y': 2, 'z': 3} 

for the_key, the_value in d.iteritems():
    print the_key, 'соответствует', the_value
1

Когда вы перебираете словари с помощью синтаксиса for .. in .., итерация происходит по ключам (значения можно получить с помощью dictionary[key]).

Чтобы перебрать пары ключ-значение, используйте следующее:

  • for k,v in dict.iteritems() в Python 2
  • for k,v in dict.items() в Python 3
0

Для перебора словарей в Python можно использовать следующий код:

dictionary = {1: "a", 2: "b", 3: "c"}

# Перебор ключей
for key in dictionary.keys():
    print(key)

# Перебор значений
for value in dictionary.values():
    print(value)

# Перебор как ключей, так и значений
for key, value in dictionary.items():
    print(key, '\t', value)

Этот код демонстрирует, как можно перебрать ключи, значения и пары ключ-значение в словаре.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь