Ich habe ein Array von dict-Objekten, die ich basierend auf mehreren Regeln bestellen sollte.Dict-Objekte basierend auf mehreren Schlüsselwerten und Vergleichsregeln sortieren
Dies ist, wie die Probe dicts wie folgt aussieht:
dict1 = {'key1': '85', 'key2': '163', 'key3': '3'}
dict2 = {'key1': '3', 'key2': '23', 'key3': '1'}
dict3 = {'key1': '88', 'key2': '153', 'key3': '6'}
Und diese Regeln sollten für die Bestellung folgen:
key1 - the higher value is the better
key2 - the higher value is the better
key3 - the lower value is the better
So nach dem meiner Liste Bestellung so sein sollte:
dict_list = [dict1, dict3, dict2]
#dict1 is the first obj, because it has the biggest key1 + key2 value and the 2. lowest key3 value
dict_list
Objekte nach Wert (gewünschtes Ergebnis):
# value name - high values (key1 + key2) - low values (key3)
1. dict1 248 3
2. dict3 241 6
3. dict2 26 1
Von key1
und key2
Ich konnte eine absolute Zahl für den Vergleich, schaffen aber leider kann ich es nicht tun, weil key3
noch da sein würde, und ich kann nicht die gleiche Logik für sie verwenden.
Also meine Frage: ist es möglich, meine eigenen Regeln für die Bestellung zu definieren? Gibt es eine Python-Funktion für solche Aufgaben?
Was machen Sie, wenn Sie {key1: 2, key3: 1} und {key1: 1, key3: 2} haben? –
Sie können Ihre eigene Bestellung mit einer Schlüsselfunktion definieren. Siehe https://wiki.python.org/moin/HowTo/Sorting – pvg