Сортировка списка кортежей на основе первого элемента кортежа [duplicate]

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

Пересмотренный jsperf

replaceAll = function(string, omit, place, prevstring) {
  if (prevstring && string === prevstring)
    return string;
  prevstring = string.replace(omit, place);
  return replaceAll(prevstring, omit, place, string)
}

It почти в два раза быстрее, чем метод split и join.

Как указано в комментарии здесь, это не будет работать, если ваша переменная omit содержит place, как в: replaceAll("string", "s", "ss"), потому что он всегда сможет заменить другое вхождение слова.

Существует еще один jsperf с вариантами на моей рекурсивной замене, которые идут еще быстрее ( http://jsperf.com/replace-all- vs-split-join / 12 )!

  • Обновление 27 июля 2017 года. Похоже, что RegExp теперь имеет самую высокую производительность в недавно выпущенном Chrome 59.

68
задан gsamaras 11 May 2016 в 20:30
поделиться

3 ответа

Вы можете использовать параметр key для list.sort():

my_list.sort(key=lambda x: x[1])

или, немного быстрее,

my_list.sort(key=operator.itemgetter(1))

(Как и в любом модуле, вы будете необходимо import operator, чтобы иметь возможность использовать его.)

132
ответ дан Sven Marnach 4 September 2018 в 08:20
поделиться
    def findMaxSales(listoftuples):
        newlist = []
        tuple = ()
        for item in listoftuples:
             movie = item[0]
             value = (item[1])
             tuple = value, movie

             newlist += [tuple]
             newlist.sort()
             highest = newlist[-1]
             result = highest[1]
       return result

             movieList = [("Finding Dory", 486), ("Captain America: Civil                      

             War", 408), ("Deadpool", 363), ("Zootopia", 341), ("Rogue One", 529), ("The  Secret Life of Pets", 368), ("Batman v Superman", 330), ("Sing", 268), ("Suicide Squad", 325), ("The Jungle Book", 364)]
             print(findMaxSales(movieList))

output -> Rogue One

-2
ответ дан Darrell White 4 September 2018 в 08:20
поделиться

И если вы используете python 3.X, вы можете применить функцию sorted в списке. Это просто дополнение к ответу, который @Sven Marnach дал выше.

# using *sort method*
mylist.sort(lambda x: x[1]) 

# using *sorted function*
sorted(mylist, key = lambda x: x[1]) 
-1
ответ дан Nde Samuel Mbah 4 September 2018 в 08:20
поделиться
Другие вопросы по тегам:

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