我有一系列的词组,其中包含键name
和val
。
我有另一个数组数组,其中总有两个值:src_XX
和dst_XX
其中XX
是整数。
我想使用name
对第一个dicts数组进行排序,并在另一个数组(数组)中对其值进行排序
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那样。
答案 0 :(得分:2)
首先,我将使用它创建一个更简单的引用数组:
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}]