#python
Вводится строка виде "a=1 b=2 c=3". Необходимо считать значение переменных а,b,c в эти переменных. Проблема в том, что эти значения могут быть вперемешку(Не a,b,c, а b,a,c). Желательно, сохранить вообще всё это в словарь, но сойдёт и в переменные
Ответы
Ответ 1
Вот записывает в словарь с ключами 'a', 'b' и 'c' и соответствующими им значениями: d = {i.split('=')[0]: int(i.split('=')[1]) for i in input().split(' ')} print(d) Или вот так: d = {} for i in input().split(' '): spl = i.split('=') d[spl[0]] = int(spl[1]) print(d)Ответ 2
Можно воспользоваться ast.literal_eval() и re.findall(): import re import ast s = 'a=1 b="2" c=3.123 d=[1, 2, 3] e={"Key1":"Val1", "Key2":"Val2"} f=0' print('исходная строка') print(s) # избавляемся от пробелов после запятой s = re.sub(r',\s+', ',', s) print('строка без лишних пробелов') print(s) d = ast.literal_eval( '{' + ','.join(['"{0[0]}":{0[1]}'.format(t) for t in re.findall(r'([^\s]*)=([^\s]*)', s)]) + '}' ) print('результат') print(d) Вывод (я слегка отформатировал вывод, для красоты): исходная строка a=1 b="2" c=3.123 d=[1, 2, 3] e={"Key1":"Val1", "Key2":"Val2"} f=0 строка без лишних пробелов a=1 b="2" c=3.123 d=[1,2,3] e={"Key1":"Val1","Key2":"Val2"} f=0 результат {'a': 1, 'b': '2', 'c': 3.123, 'd': [1, 2, 3], 'e': {'Key1': 'Val1', 'Key2': 'Val2'}, 'f': 0} Преимущество данного метода в том, что он поддерживает практически любые встроенные типы переменных:Ответ 3
globals().update(eval('dict(%s)' % "a=1 b=2 c=3".replace(' ', ','))) print(a, b, c)
Комментариев нет:
Отправить комментарий