сохранить ключи словаря при сортировке значений - PullRequest
0 голосов
/ 27 мая 2018

У меня есть следующая функция сортировки:

orderedX = np.array(list(to_sort.values()))\
[np.array(list(to_sort.values())).argmax(axis=1).argsort(), :]

, но я хочу изменить ее так, чтобы orderX превратился в словарь с элементами to_sort, а не просто в список его значений.Таким образом, способ сортировки является правильным, но есть ли какой-то способ, которым я могу также отслеживать ключи при этом?

to_sort - это диктовка с ключами и значениями, где каждое значение является np.array

1 Ответ

0 голосов
/ 27 мая 2018

Проблема со словарями в том, что они обычно не сохраняют порядок.Даже с изменениями Python 3.6 в реализации dict, документы говорят, что «на сохраняющий порядок аспект этой новой реализации [...] не следует полагаться». Здесь - еще один вопрос SO, в котором это подробно объясняется, особенно обратите внимание на ответ Martijn Pieters.Вот как вы можете создать нужную сортировку на основе ваших данных.Обратите внимание, что я попытался немного упростить алгоритм сортировки, который, насколько я понял, сортирует по максимуму массива в значениях to_sort:

from collections import OrderedDict
ordered = OrderedDict(sorted(to_sort.items(), key=lambda item:np.max(item[1])))

Итерирует по нему, какэто даст вам ключи и значения со значениями в отсортированном порядке:

for key, value in ordered.items():
    print(key, value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...