Hi! I’m working on the Python Hurricane Project. I’ve finished step 8 and I have two questions.
-
Since the morality scale is in a dictionary already is there a way to place the correct hurricane in the correct position in the scale using the mortality_scale
dictionary without using all the if/elif/else statements?
-
I understand why the incorrect function version is incorrect but why does it output each letter of each hurricane as its own list item?
# names of hurricanes
names = ['Cuba I', 'San Felipe II Okeechobee', 'Bahamas', 'Cuba II', 'CubaBrownsville', 'Tampico', 'Labor Day', 'New England', 'Carol', 'Janet', 'Carla', 'Hattie', 'Beulah', 'Camille', 'Edith', 'Anita', 'David', 'Allen', 'Gilbert', 'Hugo', 'Andrew', 'Mitch', 'Isabel', 'Ivan', 'Emily', 'Katrina', 'Rita', 'Wilma', 'Dean', 'Felix', 'Matthew', 'Irma', 'Maria', 'Michael']
# deaths for each hurricane
deaths = [90,4000,16,3103,179,184,408,682,5,1023,43,319,688,259,37,11,2068,269,318,107,65,19325,51,124,17,1836,125,87,45,133,603,138,3057,74]
hurricane_deaths = list(zip(names, deaths))
mortality_scale = {0: 0,
1: 100,
2: 500,
3: 1000,
4: 10000}
# This is the correct version
def hurricane_mortality_scale(list):
hurricanes_by_mortality = {0:[],1:[],2:[],3:[],4:[],5:[]}
for entry in list:
if entry[1] >= 10000:
hurricanes_by_mortality[4].append(entry[0])
elif 1000 <= entry[1] < 10000:
hurricanes_by_mortality[3].append(entry[0])
elif 500 <= entry[1] < 1000:
hurricanes_by_mortality[2].append(entry[0])
elif 100 <= entry[1] < 500:
hurricanes_by_mortality[1].append(entry[0])
else:
hurricanes_by_mortality[0].append(entry[0])
return hurricanes_by_mortality
hurricane_mortality_scale_dictionary = hurricane_mortality_scale(hurricane_deaths)
print(f"Correct dictionary is: {hurricane_mortality_scale_dictionary}")
# This is the incorrect version
def hurricane_mortality_scale_incorrect(list):
hurricanes_by_mortality = {0:[],1:[],2:[],3:[],4:[],5:[]}
for entry in list:
if entry[1] >= 10000:
hurricanes_by_mortality[4] += entry[0]
elif 1000 <= entry[1] < 10000:
hurricanes_by_mortality[3] += entry[0]
elif 500 <= entry[1] < 1000:
hurricanes_by_mortality[2] += entry[0]
elif 100 <= entry[1] < 500:
hurricanes_by_mortality[1] += entry[0]
else:
hurricanes_by_mortality[0] += entry[0]
return hurricanes_by_mortality
hurricane_mortality_scale_dictionary_incorrect = hurricane_mortality_scale_incorrect(hurricane_deaths)
print(f"incorrect dictionary is: {hurricane_mortality_scale_dictionary_incorrect}")