Сортировать подмножество словарных ключей - PullRequest
0 голосов
/ 20 октября 2018

Как мне отсортировать следующий список B, который является подмножеством словаря A, на основе значений A?

A = {1: 10, 2:20, 3: 15, 4: 1}
B = [1, 3, 4]

Мое решение должно быть

B = [4, 1, 3]

, начиная с

A[4] < A[1] < A[3]

1 Ответ

0 голосов
/ 20 октября 2018

Используйте A.get как key

A = {1: 10, 2:20, 3: 15, 4: 1}
B = [1, 3, 4]

>>> sorted(B, key=A.get)
[4, 1, 3]

Обратите внимание, что вы можете установить значение по умолчанию в качестве аргумента для метода .get, например, если данный ключне существует в вашем распоряжении, вы можете установить позицию самостоятельно (например, последняя позиция или первая).Например:

B = [1, 3, 4, 11]
>>> sorted(B, key=lambda k: A.get(k, -1))
[11, 4, 1, 3]

>>> sorted(B, key=lambda k: A.get(k, float('inf')))
[4, 1, 3, 11]

Или, как выделено @ jpp,

>>> sorted(B, key=A.__getitem__)

, если вы предпочитаете, чтобы KeyError был поднят, если ссылочный ключ не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...