Как отсортировать массив по наибольшему числу - PullRequest
0 голосов
/ 16 января 2020
arraydata = [
     ["bob", 56],
     ["Jan", 12],
     ["Foo", -83]
]

Я хочу получить имя и номер на дисплее с наибольшим номером.

output:
bob
56

Я пытался напечатать (max (arraydata))

Но это не сработало , Какие-либо предложения? я использую python

Ответы [ 3 ]

3 голосов
/ 16 января 2020

Вы можете просто использовать key в питонах max:

max(arraydata, key=lambda x: x[1])
#['bob', 56]

Обратите внимание, что при заполнении max всего вложенного списка, первый критерий упорядочения будет первым элементы в подсписках, и, следовательно, порядок будет лексикографическим.

Именно поэтому bob стоит на первом месте (также по совпадению):

max(arraydata)
# ['bob', 56]

Это объясняется с помощью:

[ord(i[0]) for i in ["bob", "Jan", "Foo"]]
# [98, 74, 70]
1 голос
/ 16 января 2020

Если вы просто хотите получить самое высокое, что вы можете сделать:

max(arraydata, key=lambda x: x[1])
#['bob', 56]

Если вам нужно несколько из лучших, вы также можете отсортировать:

sorted(arraydata, key=lambda x: x[1], reverse=True)
#[['bob', 56], ['Jan', 12], ['Foo', -83]]
0 голосов
/ 16 января 2020

yata ответ в порядке, но если вы хотите отсортировать список arraydata по наибольшему числу, попробуйте это:

from operator import itemgetter
a.sort(key=itemgetter(1), reverse=True)
print(a[0])
#['bob', 56]

Всегда самое высокое число на нулевом индексе, если вы используете обратный Правда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...