data = """Yin Yang 3,4,6,7,8,9,18,19,20 down up 6,7,8,9,10,11,12,14,17,18 21,22 black white 9,12,14,17,19,20 6,8,21 body mind 7,13 9,18 woman man 7,8,9,11,14,18,21,22 13 passive active 8,9,18,19,20 21,22 defence attac 9,19 20,21,22 stillness movement 18 19,20,21,22 lie truth 15,16,17,19,20,22 balance extreme 16,17,21,22 old new 17 22 object subject 0 1 15 false true 16,17,20,22 wrong right 17,19,20,22 evil good 19,20,22 slow fast 19,20,21,22 threat possibility 20,21,22 fear love 21 22 yellow blue 22 red green """ opposites = {} n=2 for d in data.splitlines(): row = d.split('\t') print row row[2:2] = [[], []] opposites[n] = row n = n + 1 for n, opposite in opposites.items(): if opposite[4]: for positive in opposite[4].split(','): opposites[int(positive)][2].append(n) for n, opposite in opposites.items(): if opposite[5]: for negative in opposite[5].split(','): opposites[int(negative)][3].append(n) for v in opposites.values(): print '\t'.join(v[:-2])
Standard input is empty
['Yin', 'Yang', '3,4,6,7,8,9,18,19,20', ''] ['down', 'up', '6,7,8,9,10,11,12,14,17,18', '21,22'] ['black', 'white', '9,12,14,17,19,20', '6,8,21'] ['body', 'mind', '7,13', '9,18'] ['woman', 'man', '7,8,9,11,14,18,21,22', '13'] ['passive', 'active', '8,9,18,19,20', '21,22'] ['defence', 'attac', '9,19', '20,21,22'] ['stillness', 'movement', '18', '19,20,21,22'] ['lie', 'truth', '15,16,17,19,20,22', ''] ['balance', 'extreme', '', '16,17,21,22'] ['old', 'new', '17', '22'] ['object', 'subject', '', ''] ['0', '1', '15', ''] ['false', 'true', '16,17,20,22', ''] ['wrong', 'right', '17,19,20,22', ''] ['evil', 'good', '19,20,22', ''] ['slow', 'fast', '', '19,20,21,22'] ['threat', 'possibility', '20,21,22', ''] ['fear', 'love', '21', '22'] ['yellow', 'blue', '22', ''] ['red', 'green', '', '']