«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как избежать ошибки «RuntimeError: размер словаря изменился во время итерации» в Python?

Как избежать ошибки «RuntimeError: размер словаря изменился во время итерации» в Python?

Опубликовано 10 ноября 2024 г.
Просматривать:541

How to Avoid the \

Как избежать ошибки «RuntimeError: словарь изменил размер во время итерации»

Попытка изменить словарь во время итерации по нему, как показано на приведенный ниже фрагмент кода может вызвать ошибку «RuntimeError: словарь изменил размер во время итерации»:

d = {'a': [1], 'b': [1, 2], 'c': [], 'd':[]}

for i in d:
    if not d[i]:
        d.pop(i)

Чтобы преодолеть это ограничение, можно использовать различные подходы:

Python 2.x и 3.x:

Принудительно скопируйте ключи, используя 'list':

for i in list(d):

Python 3.x (и более поздние версии):

Используйте 'collections.OrderedDict':

from collections import OrderedDict

for i in OrderedDict(d):

Альтернативные решения:

  1. Создайте новый словарь с нужными изменениями:
new_d = {}
for key, value in d.items():
    if value:
        new_d[key] = value
  1. Используйте метод popitem Python 3.3 и перебирайте копию:
keys_to_pop = list(d)
for i in keys_to_pop:
    if not d[i]:
        d.popitem(i)

Используя эти методы, вы можете обойти ошибку «RuntimeError: словарь изменил размер во время итерации» при обработке словарей в Python.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3