基于另一个数组重新排序

2024-04-19 18:53:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个dict数组,其中有键nameval。 我有另一个数组数组,其中总是有两个值:src_XXdst_XX,其中XX是整数

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

s = [{'name': 'src_0', 'val': 0},
     {'name': 'src_1', 'val': 1},
     {'name': 'src_2', 'val': 2},
     {'name': 'src_3', 'val': 3},
     {'name': 'src_4', 'val': 4},
     {'name': 'src_5', 'val': 5},]
u= [['src_1', 'dst_2'],
     ['src_0', 'dst_0'],
     ['dst_1', 'src_2'],
     ['dst_3', 'src_3'],
     ['src_4', 'dst_4'],
     ['src_5', 'dst_5'],] 

最终结果应该是:

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


Tags: 方法namesrc排序整数val数组dict
1条回答
网友
1楼 · 发布于 2024-04-19 18:53:21

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

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}]

相关问题 更多 >