简体   繁体   English

如何对二维数组中的元素进行排名

[英]How to rank elements within a 2D array

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我有一个表示网页流量的数据数组,其结构如下,其中每个项目的元素 0 是页面名称,元素 1 是页面浏览量,元素 2 是用户数

[['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.很抱歉没有包含任何代码,但我到处搜索,找不到任何关于从哪里开始的线索。

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']]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM