#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)
.