One liner
def number_letter(a, b):
return [[*x]for x in sorted(zip(map(sum,zip(*b)),a),key=lambda x:x[0],reverse=True)]
EDIT: An IDLE session
>>> b
[[0.5, 0.5, 0], [0.05, 0.3, 0.65]]
>>> list(zip(b[0],b[1]))
[(0.5, 0.05), (0.5, 0.3), (0, 0.65)] #zips elements from argument iterables together
>>> sum( (1,2) ) #the name says it all
3
>>> foo=lambda a,b: a+b #lambdas are temporary functions generally passed in as argument to other functions
>>> foo(1, 2)
3
>>> list(map( int, ['1', '2'] )) #maps each of the value(s) from the argument iterable(s) to the function (int in this case)
[1, 2]
>>> list(map(foo, [1,2], [4,5]))
[5, 7]
>>> print(b)
[[0.5, 0.5, 0], [0.05, 0.3, 0.65]]
>>> print(*b)
[0.5, 0.5, 0] [0.05, 0.3, 0.65] # * unpacks the iterable's elements
>>> sorted([2, 4, 7, 1, 3],reverse=True) #returns a new sorted list, passing keyword arg reverse as True sorts in descending order
[7, 4, 3, 2, 1]
>>> #Now for the best part: list comprehensions (or comprehensions in general)
>>> lst = [1,2,3,4]
>>> [ 3*x for x in lst] #i'd suggest you read about it as i don't want to ruin learning for you, i'm sorry if i did already.
[3, 6, 9, 12]
EDIT 2: Putting it all together.
>>> a
['A', 'B', 'C']
>>> b
[[0.5, 0.5, 0], [0.05, 0.3, 0.65]]
>>> x = list(map(sum,zip(*b))) #zip b[0] and b[1] and find the sum
>>> print(x)
[0.55, 0.8, 0.65]
>>> x2 = list(zip(x,a)) #[(0.55, 'A'), (0.8, 'B'), (0.65, 'C')]
>>> x3 = sorted(x2,key=lambda x:x[0],reverse=True) #sort x2 in desc order of first elements
>>> print(x3)
[(0.8, 'B'), (0.65, 'C'), (0.55, 'A')]
>>> #this is only for OP's requirement of the elements to be lists
>>> y = [ [*k] for k in x3]
>>> print(y)
[[0.8, 'B'], [0.65, 'C'], [0.55, 'A']]