Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 16, 2021 09:46:33

BabrieQ
Зарегистрирован: 2021-11-16
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

unhashable type: 'dict'

Всем привет!

Есть задание: на полках лежат документы, пользователь по команде хх может удалить полку, если она пустая.

 def remove_shelf(number):
    if number in [directories]:
        if len(directories[number]) > 0:
          return 'На полке есть документы, удалите их перед удалением полки. Текущий перечень полок: ' + ', '.join(directories.keys())
        del directories[number]
        print('Полка удалена. Текущий перечень полок: ' + ', '.join(directories.keys()))
    print ('Такой полки не существует. Текущий перечень полок:' + ', '.join(directories.keys()))
remove_shelf(directories)

На строке
  if len(directories[number]) > 0:
выдаёт ошибку unhashable type: ‘dict’

Уже умаялась…

Отредактировано BabrieQ (Ноя. 16, 2021 09:46:54)

Офлайн

#2 Ноя. 16, 2021 17:22:27

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9727
Репутация: +  843  -
Профиль   Отправить e-mail  

unhashable type: 'dict'

  
>>> d = {'a': 1, 'b': 2}
>>> d[{}]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
>>>

У тебя и функция неправильно написана, и подаётся в неё неправильное значение.



Отредактировано py.user.next (Ноя. 16, 2021 17:22:57)

Офлайн

#3 Ноя. 19, 2021 16:19:38

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

unhashable type: 'dict'

Логическая ошибка вот здесь (попробуйте понять какая именно):

 if number in [directories]:
и вот здесь:
 remove_shelf(directories)



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version