Re: [问题] 多维排列问题

楼主: apua (Apua)   2015-04-08 16:00:40
※ 引述《JetaimeMia (你好)》之铭言:
: 各位大大好
: 小鲁现在有个多维排序的问题
: 假设有2个list或array
: 每一个里面又有3*3的元素
: e.g.
: a=[ [9,8,7], [6,5,4], [3,2,1]]
: b=[ [11,12,13], [14,15,16], [17,18,19]]
: 我要如何让b照着a来排序
: 结果希望像是
: [[13,12,11],
: [7,8,9]]
: 或是
: [[13,7],[12,8],[11,9]]之类的
: 总之就是一个多维array或list照着另一个来排序
: 用了sort, sorted,等等在这种多维的情况下不知道是我哪里写错还是怎样
: 排不太出来
: 原本是用一个一个抓出来变一维的再排序的方法
: 不过在我的code里面数据一大就会跑得很慢
: 希望能直接改了再取出来这样
: 小鲁先谢谢各位了
def dim_sorted(data, key):
'''
>>> a = (0,1,3,5,8); b = (5,6,4,2,3)
>>> f(a, b)
(5, 8, 3, 0, 1)
>>> a = ((0,1,2),(3,4,5)); b = ((2,1,3), (2,3,1))
>>> f(a, b)
((1, 0, 2), (5, 3, 4))
'''
assert len(data)==len(key)
if hasattr(data[0], '__iter__'):
return tuple(map(dim_sorted, data, key))
else:
return tuple(data[i] for i,v in sorted(enumerate(key), key=lambda t:t[1]))
How about this?

Links booklink

Contact Us: admin [ a t ] ucptt.com