Search code examples
pythonfor-loopnested-loops

Python append terms that had same id but different values to a list?


I have csv file where I have general concepts and corresponding medical terms or phrases. How can I write a loop so that I can group all the phrases to their corresponding concept? I'm not very experienced with python, so I'm not reallt sure how to write the loop.

id   concept           phrase
--------------------------------
1    general_history   H&P
1    general_history   history and physical
1    general_history   history physical
2    clinic_history    clinic history physical
2    clinic_history    outpatient h p
3    discharge         discharge summary
3    discharge         DCS

For the same concept term (or same ID) how can I append the phrases to a list to get something like this:

var = [[general_history, ['history and physical', history physical]], 
       [clinic_history, ['clinic history physical', 'outpatient h p']], 
       [discharge, ['discharge summary', 'DCS']]]

Solution

  • Use a for loop to and defaultdict to accumulate the terms.

    import csv
    from collections import defaultdict
    var = defaultdict(list)
    records = ...  # read csv with csv.DictReader
    for row in records:
        concept = row.get('concept', None)
        if concept is None: continue
        phrase = row.get('phrase', None)
        if phrase is None: continue
        var[concept].append(phrase)
    print(var)