Удалите определенные ключи из словаря в Python

Я пытаюсь создать словарь, который содержит серию наборов:

{Field1:{Value1, Value2, Value3}, Field2{Value4}}

Проблема, я затем хочу удалить любые поля из словаря, которые только имеют одно значение в наборе. Я был написанием кода как это:

for field in FieldSet:
    if len(FieldSet[field]) == 1:
        del(FieldSet[field])

Но получите ошибку "RuntimeError: словарь изменил размер во время выполнения". (Не удивление, так как это - то, что я делаю.) Это не самое важное и конец - все, если я должен столкнуть своего рода обходное решение, но действительно ли возможно сделать это?

12
задан Sophie Alpert 1 January 2012 в 01:56
поделиться

2 ответа

Вместо этого итерируйте возвращаемое значение из .keys() . Поскольку вы получаете список ключей, на него не повлияет изменение словаря после вызова.

22
ответ дан 2 December 2019 в 04:02
поделиться

Иногда предпочтительной альтернативой изменению FieldSet на месте является (в зависимости от количества выполненных изменений) для создания нового и привязки его к существующему имени:

FieldSet = dict((k, v) for k, v in FieldSet.iteritems()
                if len(v) != 1)
14
ответ дан 2 December 2019 в 04:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: