Seite 1 von 1

Liste sortieren

Verfasst: Samstag 7. November 2015, 23:37
von Serpens66
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?

Re: Liste sortieren

Verfasst: Samstag 7. November 2015, 23:52
von 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.

Re: Liste sortieren

Verfasst: Samstag 7. November 2015, 23:56
von Serpens66
Vielen Dank, funktioniert =)