Проблема с сортировкой dict по значению, когда требуемый вывод находится в формате (значение, ключ) - PullRequest
0 голосов
/ 11 октября 2019

Я новичок, и мне нужна помощь в сортировке слова. Вот что я пробовал:

english_spanish = {"hi": "hola", "thanks": "gracias", "yes": "si", "no": "no"}

for word in english_spanish:
sort = sorted(english_spanish.items(), key=lambda english_spanish: english_spanish[1])
sort = [' '.join(tups) for tups in sort]
for tuple in sort:
    print(tuple)

Он выполняет сортировку правильно, но вывод

thanks gracias
hi hola
no no
yes si

Я бы хотел, чтобы вывод был в обратном порядке, но так каксортировка выводит кортеж, мне трудно его перевернуть.

Еще одна вещь, в этом коде необходимо использовать key=lambda, я знаю другие способы сделать эту сортировку, но лямбда-частьнемного меня смущает.

1 Ответ

0 голосов
/ 11 октября 2019

Я не знаю, в каком порядке вы хотите отсортировать словарь, но я постараюсь объяснить все:

Когда вы запускаете english_spanish.items(), вы получаете список кортежей.

[(key1, value1), (key2, value2) ... ]

Метод key lambda in sorted указывает, по какому элементу кортежей вы хотите отсортировать. Если вы установите lambda x: x[0], это означает, что вы сортируете, используя первое значение кортежей (key1, value1) в качестве ключа сортировки (в основном key1, key2 и т. Д.). Если вы используете lambda x: x[1], вы вместо этого используете второе значение кортежей в качестве ключа сортировки (в основном value1, value2 и т. Д.) Python doc .

Если вы хотите, чтобы ваш список кортежей имел значения [(value1, key1), ...] вместо [(key1, value1), ...], вы можете сделать что-то вроде:

sort = sorted([v[::-1] for v in english_spanish.items()], key=lambda x: x[0])

Но я думаю, что лучше сортировать, используя параметр ключауказать, по какому значению кортежа вы хотите отсортировать, а затем изменить порядок непосредственно для вашего отпечатка

english_spanish = {"hi": "hola", "thanks": "gracias", "yes": "si", "no": "no"}

sort = sorted(english_spanish.items(), key=lambda x: x[1])
sort = [' '.join(tups[::-1]) for tups in sort]
for tuple in sort:
    print(tuple)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...