首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

怎么对数组元素进行排序

2012-05-08 
如何对数组元素进行排序?有个问题想请教大家:m[1,4,7,10,2,5,6,3,9,8,15,12,13,11,18,17,16]上面数组元素

如何对数组元素进行排序?
有个问题想请教大家:
m=[1,4,7,10,2,5,6,3,9,8,15,12,13,11,18,17,16]
上面数组元素为节点号,下面是节点号及其对应X,Y,Z坐标集合
n=[[1,3.0,3.0,0],[2,3.0,3.0,3.0],[3,0,3.0,6.0],[4,3.0,3.0,9.0],[5,3.0,0,12.0],[6,3.0,3.0,15.0],[7,0,3.0,18.0],[8,3.0,3.0,21.0],[9,0,3.0,24.0],[10,3.0,3.0,27.0],[11,3.0,0,30.0],[12,3.0,3.0,33.0],[13,0,3.0,36.0],[14,3.0,0,39.0],[15,3.0,3.0,42.0],[16,3.0,3.0,45.0],[17,0,3.0,48.0],[18,3.0,3.0,51.0]]
n列表里面每一项有四个元素,分别为节点号,X向坐标,Y向坐标,Z向坐标。m列表中的元素为n列表中的节点号,我想将m列表中的元素按照其对应的Z向坐标值的大小,从小到大进行重新排序,请问大家这个如何实现,非常感谢!

[解决办法]
对n排序,重新生成新的m...

m = [i[0] for i in sorted(n, key=lambda x: x[3])]
[解决办法]

Python code
b = [ i[0] for i in sorted(n, key=lambda x: x[3]) if i[0] in m ]
[解决办法]
Python code
# 将n转换为字典nodes(以"节点号"为键)nodes = {}for (node, x, y, z) in n:    nodes[node] = dict(x=x,y=y,z=z)# m 按nodes-节点号取出坐标数据,以z坐标值排序m.sort(key=lambda x:nodes.get(x,{}).get('z',-1)) 

热点排行