Reputation: 23
I am trying to create a for loop to add values to keys in an established dictionary. However, I keep getting the last value instead of all of the values. What I am doing wrong?
My current dictionary looks like:
growth_dict = dict.fromkeys(conc[1:9], '')
growth_dict = {'100 ug/ml': '', '12.5 ug/ml': '', '50 ug/ml': '',
'0 ug/ml': '', '6.25 ug/ml': '', '25 ug/ml': '', '3.125 ug/ml': '',
'1.5625 ug/ml': ''}
cols_list = numpy.loadtxt(fn, skiprows=1, usecols=range(1,9), unpack=True)
numer = (0.301)*960 #numerator
for i in cols_list:
N = i[-1]
No = i[0]
denom = (math.log(N/No)) #denominator
g = numer/denom
When I run the program and type "growth_dict," it returns my dictionary with only the last value as the key:
growth_dict = {'100 ug/ml': 131.78785283808514, '12.5 ug/ml': 131.78785283808514,
'50 ug/ml': 131.78785283808514, '0 ug/ml': 131.78785283808514,
'6.25 ug/ml': 131.78785283808514, '25 ug/ml': 131.78785283808514,
'3.125 ug/ml': 131.78785283808514, '1.5625 ug/ml': 131.78785283808514}
Upvotes: 0
Views: 228
Reputation: 56694
You could also save a lot of effort in loading your data by doing
cols_list = numpy.loadtxt(fn, skiprows=1, usecols=range(1,9), unpack=True)
Upvotes: 1
Reputation: 30250
You're overwriting the value of the conc[j]
dictionary entry each time you do this:
growth_dict[conc[j]] = g
If you want each successive g
to be appended to the dictionary entry, try something like:
for j in conc:
# The first time each key is tested, an empty list will be created
if not instanceof(growth_dict[conc[j]], list):
growth_dict[conc[j]] = []
growth_dict[conc[j]].append(g)
Upvotes: 1