Python 基于另一个数组重新排序

Python 基于另一个数组重新排序,python,arrays,python-2.7,Python,Arrays,Python 2.7,我有一个dict数组,其中有键name,和val。 我有另一个数组,其中总是有两个值:src_XX和dst_XX其中XX是整数 我想使用名称对第一个dict数组进行排序,并将其值放置在另一个数组(数组)中 最终结果应该是: s = [{'name': 'src_1', 'val': 1}, {'name': 'src_0', 'val': 0}, {'name': 'src_2', 'val': 2}, {'name': 'src_3', 'val': 3},

我有一个dict数组,其中有键
name
,和
val
。 我有另一个数组,其中总是有两个值:
src_XX
dst_XX
其中
XX
是整数

我想使用
名称对第一个dict数组进行排序,并将其值放置在另一个数组(数组)中

最终结果应该是:

s = [{'name': 'src_1', 'val': 1},
     {'name': 'src_0', 'val': 0},
     {'name': 'src_2', 'val': 2},
     {'name': 'src_3', 'val': 3},
     {'name': 'src_4', 'val': 4},
     {'name': 'src_5', 'val': 5},]

我已经尝试了很多方法,其中一种方法正在运行,但它非常丑陋,没有优化,也不像Python。

首先,我将使用以下方法创建一个更简单的引用数组:

reference = [sorted(x)[1] for x in u]

>>> ['src_1', 'src_0', 'src_2', 'src_3', 'src_4', 'src_5']
然后按如下方式排序
s

s.sort(key=lambda x: reference.index(x['name']))

>>> [{'name': 'src_1', 'val': 1},
     {'name': 'src_0', 'val': 0},
     {'name': 'src_2', 'val': 2},
     {'name': 'src_3', 'val': 3},
     {'name': 'src_4', 'val': 4},
     {'name': 'src_5', 'val': 5}]

这是工作!唯一的问题是我需要提取这些键两次:一次用于
dst
字段,另一次用于
src
(为了简单起见,我的问题只是关于
src
)。我试图找到一种使用您的代码的方法,并制作一个类似于
ref\u dst,ref\u src=[a[0],a[1]的单行程序,用于a in[sorted(x)for x in u]
,但这不起作用。有什么想法吗?我想这正是你想要的:
ref\u dst,ref\u src=[[sorted(x)[y]表示x在u中]表示y在[0,1]]
s.sort(key=lambda x: reference.index(x['name']))

>>> [{'name': 'src_1', 'val': 1},
     {'name': 'src_0', 'val': 0},
     {'name': 'src_2', 'val': 2},
     {'name': 'src_3', 'val': 3},
     {'name': 'src_4', 'val': 4},
     {'name': 'src_5', 'val': 5}]