Как отсортировать список по 2-му элементу кортежа в Python и C#

У меня был список кортежей, где каждый кортеж состоит из двух целых чисел, и я хотел отсортировать по 2-му целому числу. После взгляда в справке Python я получил это:

sorted(myList, key=lambda x: x[1])

который является большим. Мой вопрос, там одинаково сжатый способ сделать это в C# (язык, я должен работать в)? Я знаю очевидные классы создания вовлечения ответа и определение, что анонимный делегат к целому сравнивает шаг, но возможно также существует ориентированный путь linq. Заранее спасибо за любые предложения.

9
задан John La Rooy 26 May 2010 в 01:39
поделиться

2 ответа

Предполагается, что список кортежей имеет тип IEnumerable > (последовательность кортежей, представленная с использованием класса Tuple <..> из .NET 4.0 ), вы можете написать следующее, используя методы расширения LINQ:

var result = myList.OrderBy(k => k.Item2);

В коде k.Item2 возвращает второй компонент кортежа - в C # это свойство (потому что доступ к элементу по индексу не будет ' t быть типобезопасным в целом). В остальном, я считаю, что код довольно лаконичный (в том числе благодаря красивой нотации лямбда-функций).

Используя синтаксис запроса LINQ, вы можете написать это так (хотя первая версия, IMHO, более читабельна и определенно более лаконична):

var result = from k in myList orderby k.Item2 select k;
6
ответ дан 4 December 2019 в 10:30
поделиться

Другой способ сделать это в python это

from operator import itemgetter
sorted(myList, key=itemgetter(1))
14
ответ дан 4 December 2019 в 10:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: