Эффективная сортировка словаря по ключам (целым числам), возвращающим отсортированный список значений - PullRequest
1 голос
/ 20 февраля 2020

Допустим, у меня есть следующая словарная структура:

dict = { 234 : objRefX, 123 : objRefY, 567 : objRefZ, ... }

Ключи - это целые числа, значения - это ссылки на объекты.

Без сортировки словаря самый эффективный способ вернуть список словарных значений в моих знаниях:

def toList():
   return list(dict.values())

Теперь я хотел бы отсортировать свой словарь по ключу и хотел бы вернуть отсортированный список значений (отсортированный по ключу). Есть ли более эффективный способ сделать это, как:

def toSortedList(sort_reversed=False):
   list = []
   for k, v in sorted(dict.items(), reverse=sort_reversed):
      list.append(v)
   return list

Я с нетерпением жду вашего ввода!

1 Ответ

1 голос
/ 20 февраля 2020

Сортируйте ключи, затем получите их значения.

def toSortedList(sort_reversed=False):
    return list(map(dict.get, sorted(dict, reverse=sort_reversed)))

Примерно в 2,5 раза быстрее, чем у вас, для теста, который я составил.

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