Я искал что-то, чтобы отсортировать список пар по значениям и ключам в Python. Я нашел это:Сортировка по значению и ключу
list.sort(key=lambda (k, v): (-v, k))
Как работает эта лямбда-функция?
Я искал что-то, чтобы отсортировать список пар по значениям и ключам в Python. Я нашел это:Сортировка по значению и ключу
list.sort(key=lambda (k, v): (-v, k))
Как работает эта лямбда-функция?
коррекции. list
не содержат значения в key
, value
пара. key
: value
пара представлена в словаре. Ниже приведен код для сортировки словаря по значениям, а затем на клавишах:
>>> d = {'apple': 2, 'banana': 3, 'almond':2 , 'beetroot': 3, 'peach': 4}
>>> sorted(d.iteritems(), key=lambda(k, v): (-v, k))
[('peach', 4), ('banana', 3), ('beetroot', 3), ('almond', 2), ('apple', 2)]
Объяснение: d.iteritems()
возвращает iterator объект. В sorted(d.iteritems(), key=lambda(k, v): (-v, k))
, key=lambda(k, v): (-v, k)
означает, что сортировка будет основана сначала на порядке уменьшения значения i.e -v
, а затем в порядке возрастания ключа i.e k
.
Та же логика применима к коду для сортировки списка, как указано в вопросе.
Я думаю, что OP хочет объяснения - не демо. –
Обновленный ответ с объяснением. –
Он сортирует список по паре значений. Поскольку он сортирует список, нет никаких пар ключей, значений, но больше двух значений рядом друг с другом. То, как оно написано, сортируется по второму значению в обратном направлении, затем сортирует по первому значению в нормальном порядке по возрастанию.
Здесь демонстрируется:
l1 = [[2,2],[3,1],[1,2],[4,1]]
l1.sort(key=lambda(k,v):(-v,k))
l1
=> [[1, 2], [2, 2], [3, 1], [4, 1]]
Хорошо, что * * ваши сомнения, и что вы сделали, чтобы прояснить их? Например, вы пробовали тестировать его в интерпретаторе? – jonrsharpe
Вы хотите отсортировать словарь по 'key' или' value'? –
Я хочу сортировать список по значению, а затем сортировать по ключам те, которые имеют одинаковое значение. То, что я не понял, было -v, потому что я пробовал это без ... и мне показалось, что список отсортирован только по значениям. –