from pprint import pprint


def origin_example(groups, master_list):
    print "Original Code"
    matrix = {'       ': master_list}

    for group_name, group_items in groups.items():
        match_sequence = []
        for item in master_list:
            if item in group_items: 
                match_sequence.append('X')
            else:
                match_sequence.append('-')
        matrix[group_name] = match_sequence

    pprint(matrix)


def ternary_example(groups, master_list):
    print "Code Using Ternary Conditional Statement"
    matrix = {'       ': master_list}

    for group_name, group_items in groups.items():
        match_sequence = []
        for item in master_list:
            match_sequence.append('X' if item in group_items else '-')
        matrix[group_name] = match_sequence

    pprint(matrix)


def comprehension_example(groups, master_list):
    print "Code Using List Comprehension & Ternary Conditional Statement"
    matrix = {'       ': master_list}

    for group_name, group_items in groups.items():
        matrix[group_name] = ['X' if item in group_items else '-' for item in master_list]

    pprint(matrix)


if __name__ == '__main__':

    master_list = 'A B C D E F G H'.split()
    groups = {
        "GROUP A": 'C E H'.split(),
        "GROUP B": 'A G F D'.split(),
        "GROUP C": 'B C D G'.split(),
        "GROUP D": 'D E F H'.split()
    }

    origin_example(groups, master_list)
    ternary_example(groups, master_list)
    comprehension_example(groups, master_list)
