Когда мы перебираем словарь ниже, каждая итерация возвращает (правильно) ключ, пара значений
for key, value in dict.items():
print "%s key has the value %s" % (key, value)
'some key'
имеет значение 'some value'
(повторяется, однако много раз имеется пара k, v)
Приведенное выше имеет смысл для меня, однако, если мы это сделаем:
for key in dict.items():
print "%s key has the value %s" % (key, value)
("some key", "some value")
имеет значение "some value"
(левый кортеж будет перебирать каждую пару значений ключа, а правое значение останется только при первом значении в dict и повторить)
В результате получаем каждую пару k, v, возвращенную в первом %s
(ключ), а второй %s
(значение) не выполняет итерацию, он просто возвращает первое значение в dict для каждой итерации for цикл.
Я понимаю, что если вы повторяете только for key in dict
, вы выполняете итерацию только по клавишам. Здесь, поскольку мы повторяем набор кортежей (используя dict.items()
) только с ключом в цикле for, цикл должен выполняться в течение того же числа раз, что и первый пример, так как имеется столько ключей, сколько ключ, значение пар.
У меня возникли проблемы с пониманием того, почему python дает вам весь кортеж во втором примере для key
.
Спасибо за помощь всем - я хотел бы добавить еще один вопрос в микс.
for a,a in dict.items():
print a
Почему вышеприведенное значение выдает, а если я print a,a
- очевидно, что оба значения печатаются дважды. Если бы я набрал for a,b
, я бы повторял пары (key,value)
, поэтому я бы логично подумал, что теперь я повторяю пары (key,key)
и поэтому печатаю ключ, а не значение. Извините за основные вопросы, которые просто играют в интерпретаторе и пытаются отобразить материал.