Mam listę dicts:Python sortowanie listy słowników przez wielu kluczy
b = [{u'TOT_PTS_Misc': u'Utley, Alex', u'Total_Points': 96.0},
{u'TOT_PTS_Misc': u'Russo, Brandon', u'Total_Points': 96.0},
{u'TOT_PTS_Misc': u'Chappell, Justin', u'Total_Points': 96.0},
{u'TOT_PTS_Misc': u'Foster, Toney', u'Total_Points': 80.0},
{u'TOT_PTS_Misc': u'Lawson, Roman', u'Total_Points': 80.0},
{u'TOT_PTS_Misc': u'Lempke, Sam', u'Total_Points': 80.0},
{u'TOT_PTS_Misc': u'Gnezda, Alex', u'Total_Points': 78.0},
{u'TOT_PTS_Misc': u'Kirks, Damien', u'Total_Points': 78.0},
{u'TOT_PTS_Misc': u'Worden, Tom', u'Total_Points': 78.0},
{u'TOT_PTS_Misc': u'Korecz, Mike', u'Total_Points': 78.0},
{u'TOT_PTS_Misc': u'Swartz, Brian', u'Total_Points': 66.0},
{u'TOT_PTS_Misc': u'Burgess, Randy', u'Total_Points': 66.0},
{u'TOT_PTS_Misc': u'Smugala, Ryan', u'Total_Points': 66.0},
{u'TOT_PTS_Misc': u'Harmon, Gary', u'Total_Points': 66.0},
{u'TOT_PTS_Misc': u'Blasinsky, Scott', u'Total_Points': 60.0},
{u'TOT_PTS_Misc': u'Carter III, Laymon', u'Total_Points': 60.0},
{u'TOT_PTS_Misc': u'Coleman, Johnathan', u'Total_Points': 60.0},
{u'TOT_PTS_Misc': u'Venditti, Nick', u'Total_Points': 60.0},
{u'TOT_PTS_Misc': u'Blackwell, Devon', u'Total_Points': 60.0},
{u'TOT_PTS_Misc': u'Kovach, Alex', u'Total_Points': 60.0},
{u'TOT_PTS_Misc': u'Bolden, Antonio', u'Total_Points': 60.0},
{u'TOT_PTS_Misc': u'Smith, Ryan', u'Total_Points': 60.0}]
i muszę korzystać z multi klucz sortowania odwrócony przez Total_Points, wtedy nie odwrócony przez TOT_PTS_Misc
.
Można to zrobić w wierszu polecenia tak:
a = sorted(b, key=lambda d: (-d['Total_Points'], d['TOT_PTS_Misc']))
Ale muszę uruchomić to przez funkcję, gdzie przechodzą na listy i klucze sortowania. Na przykład: def multikeysort(dict_list, sortkeys):
.
W jaki sposób można użyć linii lambda, która sortuje listę, dla dowolnej liczby kluczy, które są przekazywane do funkcji multikeysort, i weź pod uwagę, że klucze sortujące mogą mieć dowolną liczbę kluczy i te, które wymagają odwrócenia rodzaje będą identyfikowane za pomocą "-" przed nim?
Działa to najlepiej, ponieważ mogę korzystać z rewersu na dowolnych klawiszach lub kolumnach. Dziękuję Ci! – simi
To działa dobrze. Nazwam moją funkcję z listą i ciągiem jako parametrami. Najpierw podzielę ciąg, a następnie wywołaj multikeysort z listą i listą kluczy z podzielonego ciągu. Nie ma znaczenia, który element w łańcuchu ma "-" na początku nazwy kolumny, ponieważ będzie działał zarówno z elementem, jak i wszystkimi elementami. Niesamowite. Dziękuję Ci. – simi
Załóżmy, że na liście dyktów (b) znajdują się elementy, które nie mają kluczy, którymi chciałbym sortować. Jak mógłbym dla nich przetestować? Próbowałem spróbować/oprócz, ale to nic nie zwraca. – simi