I have a pandas series object S, some elements are name-value pairs, like a-12 b-23 c-42 d-25 ...
some are just a b c d
Yeah I think you're pretty close, you could would write it as a list comprehension like
result = [{"Name": n, "Value": v} for n, v in zip(S.str.split("-").str.get(0),
S.str.split("-").str.get(1))]
Although it might be a little nicer to use a regex to parse the string:
result = [{"Name": n, "Value": v} for n, v in S.str.extract("(\w)-?(\d+)?").values]