Сортировать Dict по значениям в Python 3.6+ - PullRequest
0 голосов
/ 03 сентября 2018

Я искал способ сортировки словаря в Python с его значениями, после нескольких попыток вот что получается:

a = {<populated dict...>}
a = {v: k for k, v in a.items()}
a = {v: k for k, v in sorted(a.items())}

Этот код, кажется, работает, но я думаю, что это плохо для производительности, есть ли лучший способ?

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018
from collections import OrderedDict

в противном случае создайте список ключей в нужном вам порядке.

0 голосов
/ 03 сентября 2018

Вам не нужно делать двойной обмен ключ / значение, вы можете сделать это:

a = {k: v for k, v in sorted(a.items(), key=lambda x: x[1])}

( отсортировано DOCS )

Тестовый код:

data = dict(a=1, b=3, c=2)
print(data)
data_sorted = {k: v for k, v in sorted(data.items(), key=lambda x: x[1])}
print(data_sorted)

Результаты:

Из CPython 3.6:

{'a': 1, 'b': 3, 'c': 2}
{'a': 1, 'c': 2, 'b': 3}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...