![](/img/trans.png)
[英]How to sort a list of tuples by the first element in each tuple, and pick the tuple with the largest last element in each group
[英]How to pick largest element from list?
我編寫了一個程序來計算成績和學生的姓名,我想實現一個顯示最高成績和相應學生的功能。 除了這一部分,整個程序都可以工作,因為我不確定如何選擇具有最高值的元素,因為它帶有一個附加的字符串。
我將保留整個程序,但我所指的部分是:
mediafinal = []
elif resposta.upper() == 'N':
resposta = input('Check best student and grade? (Y/N):')
if resposta.upper() == 'Y':
print('Best student and grade is: ', max(mediafinal))
break
rest的代碼
media1 = []
media2 = []
media3 = []
mediafinal = []
nomes = []
while True:
resposta = input('Pretende introduzir um aluno? (Y/N): ')
if resposta.upper() == 'Y':
nome = (input('Indique o nome do aluno: '))
nomes.append(nome)
nota1 = eval((input(f'Indique a nota do primeiro teste {nome}: ')))
nota2 = eval((input(f'Indique a nota do segundo teste {nome}: ')))
m1 = ((nota1 + nota2)/2)
infoaluno1 = []
infoaluno1.extend([nome, m1])
media1.append(infoaluno1)
print(f'O nome e média do primeiro período do aluno é: {nome} {m1}')
nota3 = eval((input(f'Indique a nota do terceiro teste {nome}: ')))
nota4 = eval((input(f'Indique a nota do quarto teste {nome}: ')))
m2 = ((nota3 + nota4) / 2)
infoaluno2 = []
infoaluno2.extend([nome, m2])
media2.append(infoaluno2)
print(f'O nome e média do segundo período do aluno é: {nome} {m2}')
nota5 = eval((input(f'Indique a nota do quinto teste {nome}: ')))
nota6 = eval((input(f'Indique a nota do sexto teste {nome}: ')))
m3 = ((nota5 + nota6) / 2)
infoaluno3 = []
infoaluno3.extend([nome, m3])
media3.append(infoaluno3)
print(f'O nome e média do terceiro período do aluno é: {nome} {m3}')
mf = ((m1 + m2 + m3)/3)
mediafinal.extend([nome, mf])
print(f'Classificação final do aluno: {nome} {mf}')
elif resposta.upper() == 'N':
resposta = input('Pretende verificar o melhor aluno e nota? (Y/N):')
if resposta.upper() == 'Y':
print('O melhor aluno é:', max(mediafinal))
break
elif resposta.upper() == 'N':
print('Ok!')
break
如果你有一個元組列表而不是交替的字符串和數字,問題就會簡單得多:
mediafinal.extend([nome, mf])
應該:
mediafinal.append((mf, nome))
然后你的max
調用就像這樣開箱即用:
mf, nome = max(mediafinal)
print('Best student and grade is: ', nome, mf)
請注意,將分數( mf
)放在元組的首位意味着max
將基於該值進行選擇。 您可以更改順序,但是您需要告訴max
根據第二個元素進行選擇:
mediafinal.append((nome, mf))
...
nome, mf = max(mediafinal, key=lambda m: m[1])
因此,無需更改任何代碼邏輯,只需修復 max() 行,我將其設置為:
max(a, key=lambda el: el[1])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.