How can I loop through this dictionary instead of hardcoding the keys

后端 未结 4 1583
长发绾君心
长发绾君心 2021-01-21 18:47

So far, I have this code (from cs50/pset6/DNA):

import csv

data_dict = {}
with open(argv[1]) as data_file:
    reader = csv.DictReader(data_file)
    for record          


        
相关标签:
4条回答
  • 2021-01-21 19:18

    You could also try using pandas.

    Using your example data as .csv file:

    pandas.read_csv('example.csv', index_col = 0).transpose().to_dict()
    

    Outputs:

    {'Alice': {'AGATC': 2, 'AATG': 8, 'TATC': 3},
     'Bob': {'AGATC': 4, 'AATG': 1, 'TATC': 5},
     'Charlie': {'AGATC': 3, 'AATG': 2, 'TATC': 5}}
    

    index_col = 0 because you have names column which I set as index (so that later becomes top level keys in dictionary)

    .transpose() so top level keys are names and not features (AGATC, AATG, etc.)

    .to_dict() to transform pandas.DataFrame to python dictionary

    0 讨论(0)
  • 2021-01-21 19:22

    You are on the right track using csv.DictReader.

    import csv
    from pprint import pprint
    
    data_dict = {}
    
    with open('fasta.csv', 'r') as f:
        reader = csv.DictReader(f)
    
        for record in reader:
            name = record.pop('name')
            data_dict[name] = record
    
    pprint(data_dict)
    

    Prints

    {'Alice': {'AATG': '8', 'AGATC': '2', 'TATC': '3'},
     'Bob': {'AATG': '1', 'AGATC': '4', 'TATC': '5'},
     'Charlie': {'AATG': '2', 'AGATC': '3', 'TATC': '5'}}
    
    0 讨论(0)
  • 2021-01-21 19:32

    You can loop through a dictionary in python simply enough like this:

    for key in dictionary:
      print(key, dictionary[key])
    
    0 讨论(0)
  • 2021-01-21 19:42

    you can simply use pandas:

    import csv
    import pandas as pd
    
    data_dict = {}
    with open(argv[1]) as data_file:
        reader = csv.DictReader(data_file)
        df = pd.DataFrame(reader)
        df = df.set_index('name') # set name column as index
        data_dict = df.transpose().to_dict() # transpose to make dict with indexes
       
    print(data_dict)
    
    0 讨论(0)
提交回复
热议问题