Вы изменяете тот же список, который итерируете, когда делаете for item in value:
.
Вместо этого вам нужно перебрать value[:]
, который возвращает копию массива
word_dict = {'show': ['exhibit', 'note', 'point to', 'indicate', 'reveal', 'demonstrate'], 'slow': ['unhurried', 'leisurely', 'behind', 'slack'],
'dangerous': ['perilous', 'hazardous', 'uncertain']}
def main():
edited_synonyms = remove_word(word_dict)
print(edited_synonyms)
def remove_word(word_dict):
for key, value in word_dict.items():
#Iterate on copy of value
for item in value[:]:
if len(item) <= 7:
value.remove(item)
return word_dict
main()
Выход будет
{
'show': ['point to', 'indicate', 'demonstrate'],
'slow': ['unhurried', 'leisurely'],
'dangerous': ['perilous', 'hazardous', 'uncertain']
}
Другой вариант - создать новый список, добавить в список слова с len>7
и назначить список ключу словаря
word_dict = {'show': ['exhibit', 'note', 'point to', 'indicate', 'reveal', 'demonstrate'], 'slow': ['unhurried', 'leisurely', 'behind', 'slack'],
'dangerous': ['perilous', 'hazardous', 'uncertain']}
def main():
edited_synonyms = remove_word(word_dict)
print(edited_synonyms)
def remove_word(word_dict):
for key, value in word_dict.items():
#List of holding words with len more that 7
li = []
for item in value:
#Add words with len more than 7 to the list
if len(item) > 7:
li.append(item)
#Assign the list to the key
word_dict[key] = li
return word_dict
main()