from itertools import groupby, chain
data = [
-1, 0,
'a','b', 1, 2, 3,
'c', 6,
'd', 'e', .4, .5,
'a', 'b', 4,
'f', 'g'
]
output = {}
groups = groupby(data, lambda i: isinstance(i, str))
try:
is_str, group = next(groups)
if not is_str:
is_str, group = next(groups)
except StopIteration:
pass
else:
for is_str, group in chain([(is_str, group)], groups):
if is_str:
key = '/'.join(group)
else:
output.setdefault(key, []).extend(group)
if is_str:
output.setdefault(key, [])
print(output)
ZnJvbSBpdGVydG9vbHMgaW1wb3J0IGdyb3VwYnksIGNoYWluCgpkYXRhID0gWwogICAgLTEsIDAsCiAgICAnYScsJ2InLCAxLCAyLCAzLAogICAgJ2MnLCA2LAogICAgJ2QnLCAnZScsIC40LCAuNSwKICAgICdhJywgJ2InLCA0LAogICAgJ2YnLCAnZycKXQpvdXRwdXQgPSB7fQpncm91cHMgPSBncm91cGJ5KGRhdGEsIGxhbWJkYSBpOiBpc2luc3RhbmNlKGksIHN0cikpCnRyeToKICAgIGlzX3N0ciwgZ3JvdXAgPSBuZXh0KGdyb3VwcykKICAgIGlmIG5vdCBpc19zdHI6CiAgICAgICAgaXNfc3RyLCBncm91cCA9IG5leHQoZ3JvdXBzKQpleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgIHBhc3MKZWxzZToKICAgIGZvciBpc19zdHIsIGdyb3VwIGluIGNoYWluKFsoaXNfc3RyLCBncm91cCldLCBncm91cHMpOgogICAgICAgIGlmIGlzX3N0cjoKICAgICAgICAgICAga2V5ID0gJy8nLmpvaW4oZ3JvdXApCiAgICAgICAgZWxzZToKICAgICAgICAgICAgb3V0cHV0LnNldGRlZmF1bHQoa2V5LCBbXSkuZXh0ZW5kKGdyb3VwKQogICAgaWYgaXNfc3RyOgogICAgICAgIG91dHB1dC5zZXRkZWZhdWx0KGtleSwgW10pCnByaW50KG91dHB1dCk=