Лично я думаю, что лучше создать новый словарь, так как это более «декларативный» и менее подверженный ошибкам: могут быть объекты, которые ссылаются на словарь, и теперь вдруг, чтословарь изменится.
Таким образом, вы можете создать словарь, например:
aDict = { k: v for k, v in aDict.iteritems() if v >= aValue }
, что дает:
>>> { k: v for k, v in aDict.iteritems() if v >= aValue }
{'3': 16, '5': 33, '4': 71}
, таким образом, мы присваиваем new словарь к той же переменной, но другие атрибуты, переменные и т. д., которые могут ссылаться на старый словарь, не "видят" никаких изменений.
Если вы действительно хотите удалить элементы в словаре, лучше не итерация и изменение словаря одновременно, вы можете сначала создать список ключей, которые должны быть удалены, например:
ks = [k for k in aDict.iteritems() if v < aValue]
for k in ks:
del aDict[k]
или в python-2.x мы можем использовать .items()
, так как это list
:
# do *not* use this in Python-3.x
for k in aDict.items():
if v < aValue:
del aDict[k]