Измените список и словарь во время итерации, почему это не удается при dict?Python

Программы на Python
Ответить
Anonymous
 Измените список и словарь во время итерации, почему это не удается при dict?

Сообщение Anonymous »

Давайте рассмотрим этот код, который перебирает список, удаляя элемент на каждой итерации:

Код: Выделить всё

x = list(range(5))

for i in x:
print(i)
x.pop()
Он выведет 0, 1, 2. Печатаются только первые три элемента, поскольку последние два элемента в списке были удалены в результате первых двух итераций.

Но если вы попробуете что-то подобное с dict :

Код: Выделить всё

y = {i: i for i in range(5)}

for i in y:
print(i)
y.pop(i)
Он выведет 0, а затем выдаст ошибку RuntimeError: размер словаря изменился во время итерации, поскольку мы удаляем ключ из словаря во время итерации это.

Конечно, изменять список во время итерации — это плохо. Но почему ошибка RuntimeError не возникает, как в случае со словарем? Есть ли веская причина для такого поведения?

Подробнее здесь: https://stackoverflow.com/questions/496 ... il-on-dict
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»