Python 基于另一个数组重新排序
我有一个dict数组,其中有键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},
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}]