Проблема заключается в следующем:
word_dict["foo"] = word_dict["foo"].add("baz")
Когда вы вызываете word_dict["foo"].add("baz")
, вы изменяете набор, к которому относится word_dict["foo"]
, и эта операция возвращает None
. Таким образом, читая ваше утверждение справа налево, вы добавляете «baz» к набору, на который ссылается word_dict["foo"]
, а затем устанавливаете результат этой операции (то есть None
) на word_dict["foo"]
.
Итак, чтобы сделать это так, как вы ожидаете, просто удалите word_dict["foo"] =
из вашего заявления.
Словари итерируют свои ключи по умолчанию, поэтому ValueError вы пытаетесь сделать так:
for key, value in word_dict:
Здесь происходит то, что итерация по word_dict возвращает только ключ (скажем, "foo"), который вы затем пытаетесь распаковать в переменные key
& value
. Распаковка "foo" дает вам "f", "o", & "o", что на одно значение слишком много, чтобы поместиться в две переменные, и, следовательно, ваш ValueError.
Как уже говорили другие, вам нужно перебирать пары ключ-значение словаря, например:
for key, value in word_dict.iteritems ():