Итерация по словарям с использованием циклов 'for'
Я работаю с Python и наткнулся на интересный вопрос, связанный с итерацией по словарю. У меня есть следующий код:
d = {'x': 1, 'y': 2, 'z': 3}
for key in d:
print(key, 'corresponds to', d[key])
В этом фрагменте кода используется цикл for
, который итерирует по словарю d
. Меня интересует, как Python понимает, что нужно лишь считать переменную key
из словаря. Является ли key
специальным ключевым словом, или это просто переменная, которую я сам объявил?
Буду признателен за разъяснение этого момента!
4 ответ(ов)
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())
.
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
Когда вы перебираете словари с помощью синтаксиса for .. in ..
, итерация происходит по ключам (значения можно получить с помощью dictionary[key]
).
Чтобы перебрать пары ключ-значение, используйте следующее:
for k,v in dict.iteritems()
в Python 2for k,v in dict.items()
в Python 3
Для перебора словарей в 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)
Этот код демонстрирует, как можно перебрать ключи, значения и пары ключ-значение в словаре.
Как вернуть ключи словаря в виде списка в Python?
Создание словаря с помощью генератора словарей
Как скопировать словарь и редактировать только копию
Преобразование списка словарей в DataFrame pandas
Следует ли использовать 'has_key()' или 'in' для проверки наличия ключа в словарях Python?