Dict в python может быть создан из повторяющихся пар (key, value)
.Но у вас есть плоский набор значений в результате вызова m.groups()
.Вам нужно выбрать четные элементы этого кортежа в качестве ключей, а затем нечетные элементы в качестве соответствующих значений, а затем zip
их вместе:
values = ('foo', 'bar', 'qux', 'blah')
dict(zip(values[::2], values[1::2]))
Вот пример использования re.match().groups()
:
import re
match = re.match(r'(\d+) (\d+) (\d+) (\d+)', '12 34 56 78')
groups = match.groups() # gives ('12', '34', '56', '78')
dict(zip(groups[::2], groups[1::2])) # gives {'56': '78', '12': '34'}
UPD: Имейте в виду, что zip
создает последовательность с длиной, укороченной до самой короткой длины ее входа.Поэтому, если m.groups()
вернуло нечетное количество элементов, последнее значение не будет получено в результирующем диктате.