Home > front end >  How to rank elements within a 2D array
How to rank elements within a 2D array

Time:07-23

I have an array of data representing web page traffic that is structured like this, where element 0 of each item is the page name, element 1 is pageviews and element 2 is number of users

[['page 1 name','3678','400']['page 2 name','4000','123']['page 3 name','3802','750']]

How do I go about ranking these items by pageviews and number of users and appending the ranks to the end of the array elements, to end up with

[['page 1 name','3678','400','3','2']['page 2 name','4000','123','1','3']['page 3 name','3802','750','2','1']]

Apologies for not including any code, but I've searched everywhere and can't find any clue about where to start with this.

CodePudding user response:

The simplest logic, sort and append the index to the end

lst = [['page 1 name','3678','400'], ['page 2 name','4000','123'], ['page 3 name','3802','750']]

views_lst = sorted(lst, key=lambda x: int(x[1]), reverse=True)
numbers_lst = sorted(lst, key=lambda x: int(x[2]), reverse=True)
for sorted_item in [views_lst, numbers_lst]:
    lst = [item   [str(sorted_item.index(item[:3])   1)] for item in lst]
print(lst)

OUTPUT:

[['page 1 name', '3678', '400', '3', '2'], ['page 2 name', '4000', '123', '1', '3'], ['page 3 name', '3802', '750', '2', '1']]

  • Related