Сортировать python словарь со значением в виде списка - PullRequest
0 голосов
/ 06 августа 2020

Если мы хотим сравнивать по всем индексам списка, а не только по 1-му элементу. Если списки идентичны, выполните сортировку по ключу. Также заранее не известна длина списка. В таком случае как отсортировать ключи. Ниже приведен пример:

{'A': [5, 0, 0], 'B': [0, 2, 3], 'C': [0, 3, 2]}

вывод:

[A, C, B]

Объяснение: A находится на 1-й позиции, потому что на 0-м индексе 5 наивысший, а остальные - 0. C находится на 2-й позиции, потому что 2-й 1-й индекс C равен 3 по сравнению с 1-м индексом B. Как вы можете видеть, нам нужно сравнить все позиции, чтобы отсортировать его, и мы не знаем размер массива перед рукой.

Я пробовал код ниже:

countPos = {'A': [5, 0, 0], 'B': [0, 2, 3], 'C': [0, 3, 2]}
res = sorted(countPos.items(), key=lambda x: ((-x[1][i]) for i in range(3)))

Получение ошибки для кода выше. Может ли кто-нибудь помочь мне в этом?

1 Ответ

0 голосов
/ 06 августа 2020

Думаю, есть решение, которое сработало. Это может быть наивно. Я призываю гуру исправить меня.

r = sorted(countPos.items(), key=lambda x: x[0])
r = dict(r)
res = sorted(r.items(), key=lambda x: x[1], reverse=True)

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

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