当前位置:首页>开发>正文

如何使用python来对二维数组进行复合排序 python列表排序

2023-04-18 00:56:47 互联网 未知 开发

 如何使用python来对二维数组进行复合排序 python列表排序

如何使用python来对二维数组进行复合排序

直接用numpy的lexsort就可以

import numpy as np
data = np.array([[1,2,3,4,5], [1,2,3,6,7], [2,3,4,5,7], [3,4,5,6,7], [4,5,6,7,8]])
idex=np.lexsort([-1*data[:,2], data[:,1], data[:,0]])
#先按第一列升序,再按第二列升序,再按第三列降序
#注意先按后边的关键词排序
sorted_data = data[idex, :]

python列表排序

[(i,j) for j,i in sorted([(a,b) for b,a in l], reverse = True)]

这样也可以
l.sort(key = lambda x:x[1],reverse = True)

thinkPHP二维数组排序

从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。
遇到这个要求的时候就不是 ORDER BY 能解决的问题了。因此翻看 PHP 手册查找到了如下方法,做此笔记。
废话少说,奉上代码,清单如下:
[php] view plain copy
/**
* 二维数组根据某个字段排序
* 功能:按照用户的年龄倒序排序
* @author ruxing.li
*/
header(Content-Type:text/htmlCharset=utf-8)
$arrUsers = array(
array(
id => 1,
name => 张三,
age => 25,
),
array(
id => 2,
name => 李四,
age => 23,
),
array(
id => 3,
name => 王五,
age => 40,
),
array(
id => 4,
name => 赵六,
age => 31,
),
array(
id => 5,
name => 黄七,
age => 20,
),
)

$sort = array(
direction => SORT_DESC, //排序顺序标志 SORT_DESC 降序;SORT_ASC 升序
field => age, //排序字段
)
$arrSort = array()
foreach($arrUsers AS $uniqid => $row){
foreach($row AS $key=>$value){
$arrSort[$key][$uniqid] = $value
}
}
if($sort[direction]){
array_multisort($arrSort[$sort[field]], constant($sort[direction]), $arrUsers)
}

var_dump($arrUsers)

/*
输出结果:

array (size=5)
0 =>
array (size=3)
id => int 5
name => string 黄七 (length=6)
age => int 20
1 =>
array (size=3)
id => int 2
name => string 李四 (length=6)
age => int 23
2 =>
array (size=3)
id => int 1
name => string 张三 (length=6)
age => int 25
3 =>
array (size=3)
id => int 4
name => string 赵六 (length=6)
age => int 31
4 =>
array (size=3)
id => int 3
name => string 王五 (length=6)
age => int 40

*/

最新文章

随便看看