I am writing a program that takes students scores from a csv file and needs to sort then highest to lowest score. the csv file looks like this:
i have tried to put the items in a list like this:
Mylist= csvfile = open (classname,'r') reader = csv.reader(csvfile) for row in reader: Mylist.append(row)
then reverse the list to put the numerical value first:
Mynewlist =  for each in Mylist: value2 = ''.join(each) value1 = ''.join(each) mynewlist.append(value1,value2)
with no luck i get this error:
Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> main() File "\\SRV-FILE3\ca231$\task 3\3.py", line 143, in main value1 = ''.join(each) IndexError: list index out of range
''.join(each) to convert to a string and then append them in the opposite order then i planned to use
.sort() to sort them numerically but I cant get them to append to a list.
does anyone know how to sort the contents of a csv file by its numerical value?
I think you're overcomplicating things. Assuming you have the data as a list of lists:
data = [("josh", "12"), ("john", "6"), ("fred", "8"), ("harry", "7")]
This could come from CSV of course, it doesn't matter to the sorting. You can sort just by calling
sorted(data, key = lambda x: int(x))
lambda is a function that picks the second element of each sub-list as the key, i.e. the score, and converts it to a number for sorting. This prints:
[('john', '6'), ('harry', '7'), ('fred', '8'), ('josh', '12')]