Сортировать список по значению в отдельном словаре? - PullRequest
0 голосов
/ 03 апреля 2020

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

Например:

input:

dict = {'a': 4, 'b': 7, 'c': 10, 'd': 1}
array = [a, b, d]

output:

array = ['d', 'a', 'b']

Порядок значений в выходном массиве будет сначала "d", поскольку его значение в словаре было самый низкий (1). Далее следуют «а» (4) и «б» (7). Я специально не включил "c" в массив.

Я не прошу решить эту проблему алгоритмически

Я спрашиваю, существует ли простой встроенный способ сделать это, например, с помощью sorted(array, key= ) функция типа.

Ответы [ 3 ]

1 голос
/ 03 апреля 2020

Я думаю, что вы просите:

>>> d = {'a': 4, 'b': 7, 'c': 10, 'd': 1} 
>>> a = ['a', 'b', 'd']
>>> sorted(a, key=d.get)
['d', 'a', 'b']
0 голосов
/ 03 апреля 2020

Вы можете попробовать это: dict = {'a': 4, 'b': 7, 'c': 10, 'd': 1} array = ["a", "b", "d "]

new_dict = sorted(dict.items(), key=lambda x: x[1])

output_array = []
for key, value in new_dict:
    check_values = key in array
    if(check_values == True):
        output_array.append(key)

print(output_array)`
0 голосов
/ 03 апреля 2020

Да, вы можете использовать лямбда-функцию, которая возвращает значение соответствующего элемента в вашем словаре.
Кстати, я думаю, что не рекомендуется использовать слово «dict» для имен переменных, как это встроенное слово в python.

print(sorted(array, key=lambda x: a_dict[x]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...