2016-10-23 3 views
-1

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

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

я хочу к выходу, как:

'12+32' = 44 

Моя логика:

1 -> писать для цикла, чтобы присвоить значения в строку, но я не знаю, как пропустите знак «+» в строке.

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

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

ответ

1

Для этого. Сначала необходимо заменить ключ на номер equation_stringdic1 с соответствующим значением с использованием 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 
+0

Вы можете просто выполнить 'equation_string = '' .join (dic1.get (x, x) для x в уравнении_строке)'. – TigerhawkT3