присвоение значения из словаря уравнению

#python #python-2.7 #python-3.x #ipython

#python #python-2.7 #python-3.x #ipython

Вопрос:

я хочу присвоить значение строковому уравнению, но я застрял с логикой.

 dic1 = {'d': '2', 'a': '1', 'c': '3', 'b': '2'}
equation_string = 'ab cd'
  

я хочу, чтобы вывод выглядел:

 '12 32' = 44
  

Моя логика:

1 -> написание цикла for для присвоения значений строке, но я не знаю, как пропустить знак ‘ ‘ в строке.

 for itr in range(0,len(equation_string)):
          equation_String[itr] = dict1[equation_str[itr]]
  

Комментарии:

1. Если вы попробуете свой код, вы увидите, что он не позволяет вам переназначать элементы неизменяемого объекта. Попробуйте проверить, есть ли символ в словаре, и создайте новую строку.

Ответ №1:

Для того, чтобы достичь этого. Сначала вам нужно заменить ключ в equation_string of dic1 на соответствующее значение с помощью string.replace() . Когда вы произвели все замены в строке, выполните строковое выражение с помощью eval() . Ниже приведен пример кода:

 >>> dic1 = {'d': '2', 'a': '1', 'c': '3', 'b': '2'}
>>> equation_string = 'ab cd'
>>> for k, v in dic1.iteritems():
...     equation_string = equation_string.replace(k, v)
... 
>>> equation_string
'12 32'   # Updated value of equation_string
>>> eval(equation_string)
44
  

Комментарии:

1. Вы могли бы просто сделать equation_string = ''.join(dic1.get(x, x) for x in equation_string) .