I can't seem to get this code to sort on avg_n_ratings in descending fashion.
Can someone please advise on how to do so, thanks.
genres_ios = freq_table(ios_final, -5)
for genre in genres_ios:
total = 0
len_genre = 0
for app in ios_final:
genre_app = app[-5]
if genre_app == genre:
n_ratings = float(app[5])
total += n_ratings
len_genre += 1
avg_n_ratings = total / len_genre
print(genre, ':', avg_n_ratings)
Here are the unsorted results to the code as is.
At the moment you just print your statements one by one, no sorting possible. You need to bunch them together (eg to a list) to get a sorting done.
Try this:
genres_ios = freq_table(ios_final, -5)
result = []
for genre in genres_ios:
total = 0
len_genre = 0
for app in ios_final:
genre_app = app[-5]
if genre_app == genre:
n_ratings = float(app[5])
total += n_ratings
len_genre += 1
avg_n_ratings = total / len_genre
result.append((genre, avg_n_ratings))
sorted_list = sorted(result, key= lambda tup: tup[1])
# the key makes the list be sorted by the 2nd element (which is the number) of each tuple
print(sorted_list)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.