我想知道是否有办法使用 sorted() 函数按 2-d 甚至 3-d 数组中的指定索引进行排序



我创建了一个 3-D 数组来存储保龄球队的信息。我在脑海中将其组织为一个包含球队的目录,这些球队中有个人资料,个人资料包括球员姓名、球队编号和得分。

我创建了一个测试列表来使用:

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() 看起来会更好。有没有办法使用 sorted() 函数中的键参数来执行此操作?

这是我

最终所做的

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]

您需要做两件事:展平列表并按特定索引对结果进行排序。

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))

最新更新