#!/usr/bin/python
import re
regex = r"(\d+):((?:\d+[-,]|\d+$)+)"
line = "8:20-24,30,31,32,10:21-24,30,31,32,15:11,12,13-14,16-18"
regex2 = r"\d+-\d+|\d+"
d={}
matchObj = re.finditer(regex,line, re.MULTILINE)
for matchNum, match in enumerate(matchObj):
#print (match.group(2))
match2 = re.finditer(regex2,match.group(2))
for matchNum1, m in enumerate(match2):
key=int(match.group(1))
if '-' in m.group():
y = m.group().split('-')
for i in xrange(int(y[0]),int(y[1])+1):
if key in d:
d[key].append(i)
else:
d[key] = [i,]
else:
if key in d:
d[key].append(int(m.group()))
else:
d[key] = [int(m.group()),]
print(d)
IyEvdXNyL2Jpbi9weXRob24KaW1wb3J0IHJlCnJlZ2V4ID0gciIoXGQrKTooKD86XGQrWy0sXXxcZCskKSspIgpsaW5lID0gIjg6MjAtMjQsMzAsMzEsMzIsMTA6MjEtMjQsMzAsMzEsMzIsMTU6MTEsMTIsMTMtMTQsMTYtMTgiCnJlZ2V4MiA9IHIiXGQrLVxkK3xcZCsiCgpkPXt9CgptYXRjaE9iaiA9IHJlLmZpbmRpdGVyKHJlZ2V4LGxpbmUsIHJlLk1VTFRJTElORSkKCmZvciBtYXRjaE51bSwgbWF0Y2ggaW4gZW51bWVyYXRlKG1hdGNoT2JqKToKCSNwcmludCAobWF0Y2guZ3JvdXAoMikpCgltYXRjaDIgPSByZS5maW5kaXRlcihyZWdleDIsbWF0Y2guZ3JvdXAoMikpCglmb3IgbWF0Y2hOdW0xLCBtIGluIGVudW1lcmF0ZShtYXRjaDIpOgoJCWtleT1pbnQobWF0Y2guZ3JvdXAoMSkpCgkJaWYgJy0nIGluIG0uZ3JvdXAoKToKCQkJeSA9IG0uZ3JvdXAoKS5zcGxpdCgnLScpCgkJCWZvciBpIGluIHhyYW5nZShpbnQoeVswXSksaW50KHlbMV0pKzEpOgoJCQkJaWYga2V5IGluIGQ6CgkJCQkJZFtrZXldLmFwcGVuZChpKQoJCQkJZWxzZToKCQkJCQlkW2tleV0gPSBbaSxdCgkJZWxzZToKCQkJCWlmIGtleSBpbiBkOgoJCQkJCWRba2V5XS5hcHBlbmQoaW50KG0uZ3JvdXAoKSkpCgkJCQllbHNlOgoJCQkJCWRba2V5XSA9IFtpbnQobS5ncm91cCgpKSxdCQkJCnByaW50KGQpCQo=
{8: [20, 21, 22, 23, 24, 30, 31, 32], 10: [21, 22, 23, 24, 30, 31, 32], 15: [11, 12, 13, 14, 16, 17, 18]}