Мне интересно, если есть способ использовать функцию sorted () для сортировки по указанному индексу в 2-й или даже 3-й массив - PullRequest
0 голосов
/ 16 апреля 2019

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

Я создал список тестов для использования:

test = [
    [["John",1,153],["Lizzy",1,129],["Matt",1,178]],
    [["Jorge",2,156],["Brent",2,145],["Kyle",2,207]],
    [["Chuck",3,300]],
    [["Joey",4,230],["Stanley",4,60]]
]

Я хочу создать отсортированный список всех профилей по их баллам, а также другой список по имени в алфавитном порядке.Я мог бы сделать это для циклов for, но это выглядело бы намного лучше, используя sorted().Есть ли способ использовать параметр key в функции sorted() для этого?

Ответы [ 2 ]

1 голос
/ 16 апреля 2019

вот что я в итоге сделал

def sort_score(directory):
    sorted_score = []
    for team in directory:
        for profile in team:
            sorted_score.append(profile)
    sorted_score = sorted(sorted_score,key=takeScore,reverse=True)
    return sorted_score

def takeScore(elem):
    return elem[2]
0 голосов
/ 28 апреля 2019

Вы хотите сделать две вещи: сгладить список и отсортировать результат по определенному индексу .

from operator import itemgetter

test = [
    [["John",1,153],["Lizzy",1,129],["Matt",1,178]],
    [["Jorge",2,156],["Brent",2,145],["Kyle",2,207]],
    [["Chuck",3,300]],
    [["Joey",4,230],["Stanley",4,60]]
]

sorted_by_name = sorted([p for team in test for p in team], key=itemgetter(0))

sorted_by_score = sorted([p for team in test for p in team], key=itemgetter(2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...