Как исправить ошибку «TypeError: unhashable type: list»?

Чтобы запустить мою программу, мне нужно взять строку и вставить числа в определенную позицию. У меня уже есть код, который это делает. Что мне нужно сделать сейчас, так это получить его, чтобы программа делала это для каждого элемента (который является числом) в списке. Я использовал встроенный цикл for и получил ошибку «TypeError: unhashable type: list». Я также хочу поместить результаты в список.

Что я уже сделал, так это написал код, который заменит числа в исходной строке, с которой я работаю в качестве доказательства концепции. Однако, когда я пытаюсь вставить цикл в предыдущий код, я получаю эту ошибку. Код выглядит следующим образом:

s = '<button id = "qty_plus_cartline_change_1221067058" type = "button" class = "quantity_plus " data-component = "quantitybox.inc">+<span class = "offscreen">Increase the Quantity 1</span></button>'
new_string = re.sub('\d+', 'new number', s,1)
print(new_string)

Это доказательство концепции, которая работает, чтобы заменить числа так, как я хочу.

updated_list = []
new_string = re.sub('\d+', [i for i in list], s,1)
updated_list.append(new_string)
print(updated_list)

Выше приведен код, который я пытаюсь использовать, чтобы заменить строку всеми числами в существующем списке.

В результате я ищу новую строку с новым обновленным номером для каждого элемента в списке (списке). Для справки:

list = [1111111111,2222222222,3333333333,4444444444]

Это означает, что я ищу это:

['<button id = "qty_plus_cartline_change_1111111111" type = "button" class = "quantity_plus " data-component = "quantitybox.inc">+<span class = "offscreen">Increase the Quantity 1</span></button>', '<button id = "qty_plus_cartline_change_2222222222" type = "button" class = "quantity_plus " data-component = "quantitybox.inc">+<span class = "offscreen">Increase the Quantity 1</span></button>', '<button id = "qty_plus_cartline_change_3333333333" type = "button" class = "quantity_plus " data-component = "quantitybox.inc">+<span class = "offscreen">Increase the Quantity 1</span></button>', '<button id = "qty_plus_cartline_change_4444444444" type = "button" class = "quantity_plus " data-component = "quantitybox.inc">+<span class = "offscreen">Increase the Quantity 1</span></button>']

Любая помощь приветствуется!

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
284
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны вызывать re.sub внутри понимания списка, а не наоборот. Кроме того, не называйте переменную list, так как это затенит встроенную функцию list. Я переименовал его в lst в следующем примере:

updated_list = [re.sub('\d+', str(i), s, 1) for i in lst]

Спасибо чувак! Утром попробую. И да, список был просто названием для примера, но вы совершенно правы ??‍♂️??

Trent Xavier 04.05.2019 08:08

Другие вопросы по теме