List in order of size

Question:

I’m trying to create a list that prints out the highest number first with a name next to it, like a football table. This is a set of test code that I have been trying it with.

import numpy as np

aa = 5
ab = 3
ac = 8
ad = 6

bb = (aa, ab, ac, ad)

cc = sorted(bb, reverse=True)
splits = np.array_split(cc, 4)

for array in splits:
    print(list(array))

It returns the numbers in a descending pattern like this:

[8]
[6]
[5]
[3]

What I am after looks like:

AC - 8
AD - 6
AA - 5
AB - 3
Asked By: ollysbee

||

Answers:

I think you are looking for somethings such as this:

# You can store elements as list of dictionaries
bb = [{'aa':5},{'ab':3},{'ac':8},{'ad':6}]

# Sorting by value, since key (of each dictionary varies)
cc = sorted(bb, key = lambda x: list(x.values())[0], reverse=True)

# Printing the results
for pair in cc:
    for key, value in pair.items():
        print(key, value)

or similarly using a dictionary:

bb = {'aa': 5, 'ab': 3, 'ac': 8, 'ad': 6}
cc = sorted(bb.items(), key=lambda item: item[1],reverse=True)

for pair in cc:
    print(pair[0],pair[1])

Free to comment below, I will clarify any points of confusion!

Answered By: Aleksei
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.