TypeError: sequence item 0: expected str instance, list found Python

проблема заключается в строке cube_word =''.join(cubes). Пробовал разные объекты, как и функциональный стиль. Хотя проблема скрывается в моей неопытности Задача: Кубики и слово. На детских кубиках с шести сторон изображены буквы. Дан список слов, образующий словарь. Необходимо подсчитать сколько слов из словаря можно выложить их кубиков. Подсказка: Для каждого размещения кубиков сгенерировать размещения с повторениями. a) используя не все кубики b) используя все кубики

from itertools import product
 
 
 def count_possible_words(cube_letters, dictionary,
 use_all_cubes=False):
     possible_words = set()
 
     for word in dictionary:
         if use_all_cubes:
             cubes_to_use = cube_letters
         else:
             cubes_to_use = cube_letters[:len(word)]
 
         for cubes in product(*cubes_to_use, repeat=len(word)):
             cube_word =''.join(cubes)
             if cube_word == word:
                 possible_words.add(word)
 
     return len(possible_words)
 
 # Пример входных данных cube_letters = [
     ['A', 'B', 'C'],
     ['D', 'E', 'F'],
     ['G', 'H', 'I'],
     ['J', 'K', 'L'], ]
 
 dictionary = ['DEF', 'AE', 'A', 'KLIF', 'HI']
 
 result_not_all = count_possible_words(cube_letters, dictionary,
 use_all_cubes=False) 
 print("Количество слов из словаря, которые можно выложить из кубиков (используя не все кубики):", result_not_all)
 
 result_all = count_possible_words(cube_letters, dictionary,
 use_all_cubes=True) 
 print("Количество слов из словаря, которые можно выложить из кубиков (используя все кубики):", result_all)

Ответы (1 шт):

Автор решения: Sergey

В сообщении об ошибке чётко указано:

TypeError: sequence item 0: expected str instance, list found

Ошибка возникает при выполнении оператора:

cube_word =''.join(cubes)

А в документации указана причина такой ошибки:

A TypeError will be raised if there are any non-string values in iterable

Т.е. элементом (sequence item 0) из итератора cubes является не строка, а * list found*. Поставьте отладочную печать перед выполнением цикла этого оператора print(cubes[0]) и Вы увидите, в чём проблема.

→ Ссылка