Список сортировки на основе значений из другого списка?

У меня есть список таких строк:

X = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]
Y = [ 0,   1,   1,    0,   1,   2,   2,   0,   1]

Каков кратчайший способ сортировки X с использованием значений из Y для получения следующего вывода?

["a", "d", "h", "b", "c", "e", "i", "f", "g"]

Порядок элементов, имеющих одинаковый «ключ», не имеет значения.Я могу прибегнуть к использованию для конструкций, но мне любопытно, есть ли более короткий путь. Есть предложения?

313
задан Aran-Fey 11 October 2018 в 12:09
поделиться

1 ответ

Можно получить индекс одного отсортированного списка и применить его к другому, например,

idx = sorted(range(len(Y)), key=lambda i: Y[i])
ans = [X[i] for i in idx]
-1
ответ дан 23 November 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: