Home > database >  Return a dictionary of a function
Return a dictionary of a function

Time:06-09

I want to define a function, that reads a table of a textfile as a dictionary and than use it for returning specific values. The keys are chemical symbols (like "He" for Helium,...). The values return their specific atom masses. I don't understand, what I have to do...

The first five lines of the textfile read:

H,1.008

He,4.0026

Li,6.94

Be,9.0122

B,10.81

Here are my attempts: (I don't know where to place the parameter key so that I can define it)

def read_masses():
         atom_masses = {}
         with open["average_mass.csv") as f:
             for line in f:
             (key, value) = line.split(",")
             atom_masses[key] = value
             return(value)

m = read_masses("average_mass.csv)
print(m["N"])                          #for the mass of nitrogen   ```

CodePudding user response:

Try:

def read_masses(name):
    data = {}
    with open(name, "r") as f_in:
        for line in map(str.strip, f_in):
            if line == "":
                continue
            a, b = map(str.strip, line.split(",", maxsplit=1))
            data[a] = float(b)
    return data


m = read_masses("your_file.txt")
print(m.get("He"))

Prints:

4.0026

CodePudding user response:

once return has called, the code below it doesn't execute. What you need to return is the atom_masses not value and you have to place it outside the for loop

def read_masses(file):
    atom_masses = {}
    with open(file) as f:
        for line in f:
            (key, value) = line.split(",")
            atom_masses[key] = value
    
    return (atom_masses)

m = read_masses("average_mass.csv")
print(m["H"])
>>> 1.008
  • Related