Пара вариантов выбрать из
data = ["FOO x 2", "BAR x 11", "PERC"]
res = { key : int(value) if value else 1
for key, sep, value in map(lambda s: s.partition(' x '), data) }
res = {}
for item in data:
key, sep, value = item.partition(' x ')
res[key] = int(value) if value else 1
res = {}
for item in data:
key, *value = item.split(' x ')
res[key] = int(value[0]) if value else 1
res = {}
for item in data:
key, value = (item.split(' x ') + [1])[:2]
res[key] = int(value)
# Output - res
{'FOO': 2, 'BAR': 11, 'PERC': 1}
Заметим, что это предполагает, что ваши данные всегда будут в таком формате, в противном случае, возможно, потребуется включить .strip()
или другие незначительные изменения.
Почему 'PERC' имеет значение' 1'? –
@ JimFasarakis-Hilliard * Предполагается, что * будет «x 1», если рядом с ним нет множителя. – Josh