Как я могу отсортировать список кортежей одним из его значений, а затем другим?

Я догадаюсь, у меня есть это:

ocurrencias = [('quiero', 1), ('aprender', 1), ('a', 1), ('programar', 1), ('en', 1), ('invierno', 2), ('hace', 1), ('frio', 1), ('este', 1)] 

Я хочу отсортировать его по второму значению кортежей, а затем по их строковому значению, а затем распечатать каждый элемент, чтобы получить это:

  output:invierno 2 a 1 aprender 1 en 1 este 1 frio 1 hace 1 programar 1 quiero 1 

Не знаю, даю ли я достаточно ясно, но я не владею английским языком, поэтому простите меня.

заранее спасибо

One Solution collect form web for “Как я могу отсортировать список кортежей одним из его значений, а затем другим?”

Используйте sorted с ключом, который делает обратную версию каждого кортежа, чтобы отсортировать второе значение в порядке убывания, вы можете добавить a-in перед отрицанием значения:

 sorted(ocurrencias, key = lambda x: (-x[1], x[0])) # [('invierno', 2), ('a', 1), ('aprender', 1), ('en', 1), ('este', 1), ('frio', 1), ('hace', 1), ('programar', 1), ('quiero', 1)] 

Как прокомментировал @Jonathon, причина, по которой это работает, связана с тем, что сравнение списков и кортежей происходит в порядке, то есть сравните первый элемент; если не равно, то второй элемент, чтобы больше узнать об сравнении объектов в python.

  • Использование ключевого слова Python?
  • Что делает пользовательский класс неумелым?
  • Функции более высокого порядка: автоматическая генерация против ручного определения
  • Сохранение связей urllib.request с HTTP-сервером
  • python 3.3: struct.pack не будет принимать строки
  • печать в файл в Python: перенаправление против аргумента файла print vs write
  • Python - импортировать модуль из каталога, который не является пакетом
  • Как читать входы как целые числа?
  • Python - лучший язык программирования в мире.