Господи, ну когда же народ научиться сперва включать мозги и самостоятельно искать ответы на такие простейшие вопросы, а уж потом писать вопросы на форум!
Ну написано же, ясно, четко, ОДНОЗНАЧНО:
price_1 = code['price']
TypeError: string indices must be integers"
Ну что же тут не ясно!!! В любом IDE в менеджере переменных сразу же видно, что
в объекте code в момент выполнения строки
price_1 = code['price']
находится строковое значение '12345'. СТРОКОВОЕ!!!! А в строке индексом может быть исключительно int-значение. А вы пытаетесь вместо индекса указать опять-таки строку
'price'
Только не спрашиваете, как это исправить. Потому что понять логику вашей программы, в которой вы сначала в создаете объект
code
, копируя в него элемент словаря
goods[name]
, а потом этот же объект внутри цикла используете как объект - итератор цикла -
for code in store:
, т.е. перебирая объекты уже совершенно другого словаря
store
лично я не в силах. Чего вы хотели-то от такой дивной конструкции?
Совет: сначала исправьте логику программы, а потом - может и синтаксис исправлять не придется.
И еще совет. Откройте учебник по Python, найдите в нем главу про словари, потом посмотрите, как делать обход словаря. Это азы! И разберитесь, в чем разница между следующими тремя конструкциями:
for val in dict.values()
for key in dict.keys():
for key in dict: