我创建了一个 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))