Liste sortieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Serpens66
User
Beiträge: 259
Registriert: Montag 15. Dezember 2014, 00:31

Hi,

wie löse ich folgendes Problem:

Code: Alles auswählen

priorisieren = ["Esel","Katze"]
liste = [{"Tier":"Hase","Rang":5},{"Tier":"Hund","Rang":2},{"Tier":"Katze","Rang":1},{"Tier":"Maus","Rang":6},{"Tier":"Esel","Rang":3},{"Tier":"Huhn","Rang":4}] # bisher willkuerliche reihenfolge
# es soll sortiert werden nach größe der ränge, größter rang zuerst. Aber alle Tiere, die in der priorisieren Liste stehen, sollen zuerst stehen.

# Ergebnis soll also sein:
# [{"Tier":"Esel","Rang":3},{"Tier":"Katze","Rang":1},{"Tier":"Maus","Rang":6},{"Tier":"Hase","Rang":5},{"Tier":"Huhn","Rang":4},{"Tier":"Hund","Rang":2}]

sortedliste = sorted(liste,key=lambda angaben: angaben["Rang"],reverse=True) 
# hiermit könnte man es nach Rang sortieren. Aber wie bekomme ich die priorisierung dazu?
BlackJack

Ungetestet: ``lambda angaben: (angaben['Tier'] in priorisieren, angaben['Rang'])``

Und wenn `priorisieren` umfangreicher werden sollte, würde ich dafür ein `set` anstelle einer Liste verwenden.
Serpens66
User
Beiträge: 259
Registriert: Montag 15. Dezember 2014, 00:31

Vielen Dank, funktioniert =)
Antworten