Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

считать значения переменных в словарь из строки вида: “key1=value1 key2=value2 key3=value3”

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

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

Отправить комментарий