musicas=[
('Música3',{'toques':137}),
('Música7',{'toques':2}),
('Música11',{'toques':30}),
('Música9',{'toques':45}),
('Música10',{'toques':79}),
('Música2',{'toques':190}),
('Música8',{'toques':201}),
('Música5',{'toques':44}),
('Música1',{'toques':29}),
('Música6',{'toques':14}),
('Música4',{'toques':14}),
]
Como criar uma nova lista chamada 'maistocadas' em que apareçam as músicas da lista musicas ordenadas em função do número de toques (ordem decrescente) mas sem usar sort ou sorted do Python?
Eu fiz:
lista=[
('Música3',{'toques':137}),
('Música7',{'toques':2}),
('Música11',{'toques':30}),
('Música9',{'toques':45}),
('Música10',{'toques':79}),
('Música2',{'toques':190}),
('Música8',{'toques':201}),
('Música5',{'toques':44}),
('Música1',{'toques':29}),
('Música6',{'toques':14}),
('Música4',{'toques':14}),
]
temp = lista[:]
ordenados = list()
maistocadas = []
"""
procuro o maior insiro na lista ordenados e depois removo da lista
temp. em seguida procuro o novo maior e repito o processo até esvaziar
temp
while not len(temp) == 0:
pos = 0
while pos < len(temp):
if pos == 0:
maior = temp[pos]
elif temp[pos][1]['toques'] > maior[1]['toques']:
maior = temp[pos]
pos += 1
ordenados.append(maior)
temp.remove(maior)
print(temp)
print(ordenados)
for ele in ordenados:
maistocadas.append(ele[0])
print(f"As músicas mais tocadas: {maistocadas} ")
O programa funciona mas deve existir uma maneria mais simples de fazer. Alguma sugestão?